实现QT android自启动

使用QT编写android程序,难免会需要调用JAVA代码,具体调用方式见 http://blog.csdn.net/foruok/article/details/39291273

如果想在此情况下再实现自启动,除了增加BroadcastReceiver响应设备启动事件以及相应的权限外

 

<receiver android:enabled="true" android:name="an.qt.useJar.BootBroadcastReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <category android:name="android.intent.category.HOME"/>
            </intent-filter>
        </receiver>
 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

 

 

 

注意在BroadcastReceiver中

 

public class BootBroadcastReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        Intent boot = new Intent(context, ExtendsQtWithJava.class);
        boot.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(boot);
    }
}

以上代码红色部分,ExtendsQtWithJava是提供给QT调用的JAVA代码,它基础于org.qtproject.qt5.android.bindings.QtActivity

 

所以直接使用该类启动应用即可,很简单但很容易被忽视

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Qt for Android中,要实现开机自启的功能,可以通过以下步骤实现: 1. 在AndroidManifest.xml文件中添加启动广播接收器的声明。可以使用Qt提供的Android源文件模板进行修改,加入以下代码: ```xml <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <receiver android:name="your.package.name.BootReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> ``` 2. 在qtandroidextras模块中创建一个新的JNI类,并继承QtService。这个类将作为启动服务的入口点。可以使用以下代码: ```cpp #include <QtAndroidExtras/QAndroidJniObject> #include <QtAndroidExtras/QAndroidJniEnvironment> #include <QtAndroidExtras/QtAndroid> #include "yourjni.h" void YourJNI::startService() { QAndroidJniObject::callStaticMethod<void>("your/package/name/BootService", "start", "()V"); } ``` 3. 在YourJNI类中,创建一个静态的start方法,该方法将由Android的BootReceiver类调用。在这个方法中,你可以编写开机自启动的逻辑代码,例如启动你的Qt应用程序。 4. 在BootReceiver类中,重写onReceive方法,并在其中调用YourJNI类的startService方法,来启动你的服务。 5. 编译和部署你的Qt应用程序到Android设备。 这样,当Android设备开机后,BootReceiver类将会接收到BOOT_COMPLETED广播,并调用YourJNI类的startService方法,从而启动你的Qt应用程序。 请注意,需要在Qt for Android项目的.pro文件中添加以下行,以包含所需的模块和类: ``` QT += androidextras ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值