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