gpt4 book ai didi

android - 从 QT 应用程序 (com.android.settings) 打开 android 设置

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:25:04 25 4
gpt4 key购买 nike

我在 QT 中有一个 android 应用程序。我想从一个按钮调用 android 设置。

我在 Java 中使用了这段代码:

public void usb(View v){
Intent intent = new Intent();
intent.setClassName("com.android.settings", "com.android.settings.DevelopmentSettings");
startActivity(intent);
}

有没有办法使用 QT C++ 调用 android 设置?

最佳答案

QAndroidJniObject 使得从 Qt C++ 代码创建 JNI 对象成为可能。

例如:获取 Activity :

QAndroidJniObject activity =  QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");

例如:创建一个新的Intent:

QAndroidJniObject intent("android/content/Intent","()V");

然后您可以逐步从 C++ 翻译执行您的 java 代码....

要回答您的具体问题,只需复制/粘贴此代码:

QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");   //activity is valid
if ( activity.isValid() )
{
// Equivalent to Jave code: 'Intent intent = new Intent();'
QAndroidJniObject intent("android/content/Intent","()V");
if ( intent.isValid() )
{
QAndroidJniObject param1 = QAndroidJniObject::fromString("com.android.settings");
QAndroidJniObject param2 = QAndroidJniObject::fromString("com.android.settings.DevelopmentSettings");

if ( param1.isValid() && param2.isValid() )
{
// Equivalent to Jave code: 'intent.setClassName("com.android.settings", "com.android.settings.DevelopmentSettings");'
intent.callObjectMethod("setClassName","(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;",param1.object<jobject>(),param2.object<jobject>());

// Equivalent to Jave code: 'startActivity(intent);'
activity.callObjectMethod("startActivity","(Landroid/content/Intent;)V",intent.object<jobject>());
}
}
}

...然后投票! ;-)

关于android - 从 QT 应用程序 (com.android.settings) 打开 android 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com