我有一个在打开应用程序时运行的Android服务,现在我希望我的Android服务在启动时运行。我尝试了波纹管代码,但是当我重新启动设备时,该服务不会自动运行。我看不到它在手机上作为服务运行!我的代码中有问题吗?
我将这些权限添加到清单中:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECEIVE_HEADSET_PLUG"/>
这是我在清单中的接收器:
<receiver android:name="org.qtproject.example.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED"/>
<action android:name="android.intent.action.RECEIVE_HEADSET_PLUG"/>
</intent-filter>
</receiver>
这是mybroadcastreceiver.java:
import android.os.Bundle;
import org.qtproject.qt5.android.bindings.QtActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent startServiceIntent = new Intent(context, org.qtproject.example.MyCustomAppService.class);
context.startService(startServiceIntent);
}
}
替换 <action android:name="android.intent.action.RECEIVE_BOOT_COMPLETED"/>
和 <action android:name="android.intent.action.BOOT_COMPLETED"/>
在清单
好的,所以我在代码中遇到了2个问题:
1(感谢@kajay,我不得不如他描述的那样改变我的动作线成为: 清单中的<action android:name="android.intent.action.BOOT_COMPLETED"/>
。
2(我缺少在mybroadcastreceiver.java中定义软件包。因此,班级找不到StarterViceIntent。当然,QT不会出现任何Java问题的错误或警告。因此,就我而言,我必须将其添加到mybroadcastreceiver.java:
package org.qtproject.example;
我必须执行以上两个步骤来解决我的问题!P.S有时该服务在启动后需要大约45秒或以上才能开始!