Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用QT打开位置设置_Android_C++_Qt_Location - Fatal编程技术网

Android 使用QT打开位置设置

Android 使用QT打开位置设置,android,c++,qt,location,Android,C++,Qt,Location,如何通过Qt从android打开位置设置 我已尝试此操作,可以成功打开设置,但无法打开位置设置: QAndroidJniObject intent("android/content/Intent","()V"); if ( intent.isValid() ) { QAndroidJniObject param1 = QAndroidJniObject::fromString("com.android.settings"); QAndroidJni

如何通过Qt从android打开位置设置

我已尝试此操作,可以成功打开设置,但无法打开位置设置:

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>());
        }
    }
qandroidjniobjectintent(“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()&¶m2.isValid())
{
intent.callObjectMethod(“setClassName”,“(Ljava/lang/String;Ljava/lang/String;)Landroid/content/intent;”,param1.object(),param2.object());
activity.callObjectMethod(“startActivity”,“(Landroid/content/Intent;)V”,Intent.object();
}
}
我甚至将param2改为“android.settings.LOCATION\u SOURCE\u settings”,正如它写在android开发者页面上一样,但没有成功

有人知道怎么做吗?
谢谢

我找到了解决办法

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>());
    }
}
QAndroidJniObject activity=QAndroidJniObject::callStaticObjectMethod(“org/qtproject/qt5/android/qtnotive”,“activity”,“Landroid/app/activity;”);
if(activity.isValid())
{

qDebug()我找到了解决方案!

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>());
    }
}
QAndroidJniObject activity=QAndroidJniObject::callStaticObjectMethod(“org/qtproject/qt5/android/qtnotive”,“activity”,“Landroid/app/activity;”);
if(activity.isValid())
{
qDebug()
QAndroidJniObject activity=QAndroidJniObject::callStaticObjectMethod(“org/qtproject/qt5/android/QtNative”,“activity”,“()Landroid/app/activity;”;
if(activity.isValid())
{
QAndroidJniObject param=QAndroidJniObject::fromString(“android.settings.LOCATION\u SOURCE\u settings”);
if(param.isValid())
{
QAndroidJniObject intent(“android/content/intent”,“(Ljava/lang/String;)V”,param.object();
activity.callMethod(“startActivity”,“(Landroid/content/Intent;)V”,Intent.object();
}
}
QAndroidJniObject activity=QAndroidJniObject::callStaticObjectMethod(“org/qtproject/qt5/android/QtNative”,“activity”,“()Landroid/app/activity;”;
if(activity.isValid())
{
QAndroidJniObject param=QAndroidJniObject::fromString(“android.settings.LOCATION\u SOURCE\u settings”);
if(param.isValid())
{
QAndroidJniObject intent(“android/content/intent”,“(Ljava/lang/String;)V”,param.object();
activity.callMethod(“startActivity”,“(Landroid/content/Intent;)V”,Intent.object();
}
}