summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Stromme <christian.stromme@theqtcompany.com>2016-04-18 11:48:29 +0200
committerChristian Stromme <christian.stromme@theqtcompany.com>2016-04-18 12:50:11 +0000
commitc22fcf03fba1ce361b297f42f2560ba985911f05 (patch)
tree7a0c56c7877348e50561efb614548f688d8ef346
parentdd22889ed63599d44baa3bcb0fff6f75f328ff50 (diff)
Android: Fix crash on startup
All internal settings are stored as strings, if the requested setting value doesn't exist, or the type conversion fails, then an exception is thrown. Instead of making use of the convenience functions we can just get the original string an convert it ourself. Task-number: QTBUG-52574 Change-Id: Ic410244a373318e167437eea4381335a907ccbf9 Reviewed-by: Paul Olav Tvete <paul.tvete@theqtcompany.com>
-rw-r--r--src/plugins/platforms/android/qandroidplatformintegration.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformintegration.cpp b/src/plugins/platforms/android/qandroidplatformintegration.cpp
index c0a2b2c578..e10bd95e12 100644
--- a/src/plugins/platforms/android/qandroidplatformintegration.cpp
+++ b/src/plugins/platforms/android/qandroidplatformintegration.cpp
@@ -196,9 +196,16 @@ QAndroidPlatformIntegration::QAndroidPlatformIntegration(const QStringList &para
auto contentResolver = javaActivity.callObjectMethod("getContentResolver", "()Landroid/content/ContentResolver;");
Q_ASSERT(contentResolver.isValid());
- m_showPasswordEnabled = QJNIObjectPrivate::callStaticMethod<jint>("android/provider/Settings$System", "getInt",
- "(Landroid/content/ContentResolver;Ljava/lang/String;)I", contentResolver.object(),
- QJNIObjectPrivate::getStaticObjectField("android/provider/Settings$System", "TEXT_SHOW_PASSWORD", "Ljava/lang/String;").object()) > 0;
+ QJNIObjectPrivate txtShowPassValue = QJNIObjectPrivate::callStaticObjectMethod("android/provider/Settings$System",
+ "getString",
+ "(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;",
+ contentResolver.object(),
+ QJNIObjectPrivate::getStaticObjectField("android/provider/Settings$System", "TEXT_SHOW_PASSWORD", "Ljava/lang/String;").object());
+ if (txtShowPassValue.isValid()) {
+ bool ok = false;
+ const int txtShowPass = txtShowPassValue.toString().toInt(&ok);
+ m_showPasswordEnabled = ok ? (txtShowPass == 1) : false;
+ }
}
QGuiApplicationPrivate::instance()->setApplicationState(m_defaultApplicationState);