diff options
author | Christian Stromme <christian.stromme@theqtcompany.com> | 2016-04-18 11:48:29 +0200 |
---|---|---|
committer | Christian Stromme <christian.stromme@theqtcompany.com> | 2016-04-18 12:50:11 +0000 |
commit | c22fcf03fba1ce361b297f42f2560ba985911f05 (patch) | |
tree | 7a0c56c7877348e50561efb614548f688d8ef346 | |
parent | dd22889ed63599d44baa3bcb0fff6f75f328ff50 (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.cpp | 13 |
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 ¶ 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); |