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
在这里插入图片描述

实现Qt for Android开机启动,可以按照以下步骤操作: 1. 首先,需要在Qt中创建一个Android工程,并配置QtAndroid插件。可以使用Qt Creator的向导来完成这些配置。 2. 在QtAndroidManifest.xml文件中添加必要的权限: ``` <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 3. 在QtAndroidManifest.xml文件中注册一个启动接收器(boot receiver),用于接收开机完成的广播消息: ``` <receiver android:name="com.example.BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> ``` 需要注意,该接收器类名为com.example.BootReceiver,你需要根据你的应用程序的包名和类名进行修改。 4. 创建一个启动接收器的Java类(BootReceiver),实现广播接收器功能: ``` package com.example; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) { // 在这里启动你的Qt主活动(Main Activity) Intent mainActivityIntent = new Intent(context, com.example.MainActivity.class); mainActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(mainActivityIntent); } } } ``` 同样,你需要根据你的应用程序的包名和类名进行修改。 5. 编译和部署你的Qt应用到Android设备。确保你的设备已经获得了BOOT_COMPLETED权限。 以上就是使用Qt for Android实现开机启动的步骤。当设备开机完成后,BootReceiver接收到广播消息后会启动你的Qt应用的主活动(Main Activity)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值