Qt for android app实现启动跳转到原生android app

qt跨平台安卓应用跳转安卓应用

前言

最近项目上碰到一个客户要求在我门的应用跳转到他们的应用,刚开始觉得还挺简单,去网上查了大半天,全都是原生java跳转的栗子,不过还好还有几个栗子可以参考,于是就有下来的记录

1.新建QtIntent.java文件

项目中新建QtIntent.java(名字自定义的)文件, 在QtIntent.java中加入以下实现跳转代码,下面实现了两种跳转方式。1.通过包名将应用给调起来。2.通过包名以及页面类名跳转到指定界面,包名可通过以下下方式,类名就需要第三方软件的开发者,公司给了,亦或者反编译获取也不是不行,

package org.qtproject.example;

import org.qtproject.qt5.android.bindings.QtActivity;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
import android.os.Bundle;
import android.util.Log;


public class QtIntent{
    
    
    *public static void starApplication(){
    
    //只知道包名,
			QtActivity activity = QtActivity.m_activity;//获取源码中定义的m_activity
        	Intent intent = activity.getPackageManager().getLaunchIntentForPackage("com.android.XXXX");//通过包名获取Intent
        	activity .startActivity(intent);//启动包名对应的应用
     }
     public static void starApplication_Activity(){
    
    //知道包名,也知道具体跳转的Activity名称
            //知道要跳转应用的包命与目标Activity
            QtActivity activity = QtActivity.m_activity;//获取源码中定义的m_activity
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.setClassName("com.android.XXXX", "com.android.XXXX.XXXX");//包名,目标Activity
            intent.putExtra("", "");//这里Intent传值
//        intent.addCategory(Intent.CATEGORY_LAUNCHER);
//        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            activity.startActivity(intent);//启动包名对应的应用*

     }
}

获取包名》 设置–应用管理–选择应用–查看应用详细信息
在这里插入图片描述在这里插入图片描述

2.qt代码实现

在跳转按钮的槽函数中加入以下实现调用java的代码

void MainWindow::m_openApplication(){
    
    
    QAndroidJniObject::callStaticMethod<void>("org/qtproject/example/QtIntent",
                                           "starApplication",
                                           "()V");
}

3.修改源码,编译,运行,就可以跳转啦

修改源码路径下的 QtActivity.java文件
D:\Qt\5.9\android_armv7\src\android\java\src\org\qtproject\qt5\android\bindings\QtActivity.java
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/FF_lz/article/details/122376117