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>bb10
parent
dd22889ed6
commit
c22fcf03fb
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue