androidc++qtqandroidjniobject

Getting Android account manager from qt in c++


Using this code:

QAndroidJniObject activity = QtAndroid::androidActivity();
QAndroidJniObject accountManager = QAndroidJniObject::callStaticObjectMethod("android.accounts.AccountManager","get","(Landroid/content/Context;)android.accounts.AccountManager;",activity.object());
qDebug() << accountManager.isValid();

I am trying to get an instance of the android AccountManager in c++. Unfortantly the output of the line qDebug() << accountManager.isValid(); outputs false.


Solution

  • I think this is because of invalid method signature. You forget L. Also your object name is invalid. Look at some Qt examples. It's always like this

    jint max = QAndroidJniObject::callStaticMethod("java/lang/Math", "max", "(II)I", a, b);

    So valid string is:

    QAndroidJniObject accountManager = QAndroidJniObject::callStaticObjectMethod("android/accounts/AccountManager","get","(Landroid/content/Context;)Landroid/accounts/AccountManager;",activity.object());