From c22fcf03fba1ce361b297f42f2560ba985911f05 Mon Sep 17 00:00:00 2001 From: Christian Stromme Date: Mon, 18 Apr 2016 11:48:29 +0200 Subject: 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 --- .../platforms/android/qandroidplatformintegration.cpp | 13 ++++++++++--- 1 file 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("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); -- cgit v1.2.3