从QT应用程序打开android设置(com.android.settings) [英] open android settings from QT app(com.android.settings)

查看:1046
本文介绍了从QT应用程序打开android设置(com.android.settings)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Android应用程序在QT。
我想从一个按钮调用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设置?

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


解决方案

QAndroidJniObject可以从Qt C ++代码创建JNI对象。



示例:获取活动:

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

例如:创建一个新的Intent:

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

然后,您可以一步一步翻译从C ++ ....执行您的Java代码....



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

  QAndroidJniObject = QAndroidJniObject :: callStaticObjectMethod(org / qtproject / qt5 / android / QtNative,activity,()Landroid / app / Activity;); // activity is valid 
if(activity.isValid())
{
//相当于Jave代码:'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())
{
//相当于Jave代码:'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>());

//相当于Jave代码:'startActivity(intent);'
activity.callObjectMethod(startActivity,(Landroid / content / Intent;)V,intent.object< jobject>());
}
}
}

...向上! ; - )


I have an android application in QT. I would like to call android settings from a button.

I used this code in Java :

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

Is there a way to call android settings using QT C++?

解决方案

QAndroidJniObject makes it possible to create JNI objects from Qt C++ code.

For example: to get the activity:

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

For example: to create a new Intent:

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

You can then step by step translate execute your java code from C++....

To answer your specific question, just copy/paste this code:

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>());
        }
    }
}

...and then vote up! ;-)

这篇关于从QT应用程序打开android设置(com.android.settings)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆