2015-09-28 96 views
0

我怎样才能通过Qt从android打开位置设置?打开位置设置安卓与QT

我已经尝试过这一点,我可以顺利打开的设置,而不是位置设置:

QAndroidJniObject intent("android/content/Intent","()V"); 
    if (intent.isValid()) 
    { 
     QAndroidJniObject param1 = QAndroidJniObject::fromString("com.android.settings"); 
     QAndroidJniObject param2 = QAndroidJniObject::fromString("com.android.settings.Settings"); 

     if (param1.isValid() && param2.isValid()) 
     { 
      intent.callObjectMethod("setClassName","(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",param1.object<jobject>(),param2.object<jobject>()); 

      activity.callObjectMethod("startActivity","(Landroid/content/Intent;)V",intent.object<jobject>()); 
     } 
    } 

我甚至已经改变了参数2为“android.settings.LOCATION_SOURCE_SETTINGS”,因为它是在写Android开发者页面 - 但没有任何成功。

有人知道该怎么做吗? 谢谢!

回答

0

我找到了解决方案!

QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;"); 
if (activity.isValid()) 
{ 
    qDebug() << "activity.isValid()"; 
    QAndroidJniObject param = QAndroidJniObject::fromString("android.settings.LOCATION_SOURCE_SETTINGS"); 

    if (param.isValid()) 
    { 
     QAndroidJniObject intent("android/content/Intent","(Ljava/lang/String;)V", param.object<jstring>()); 
     activity.callObjectMethod("startActivity","(Landroid/content/Intent;)V",intent.object<jobject>()); 
    } 
}