我创建了一个应该在BOOT之后启动服务的Android应用程序。 它在Nexus 5手机上运行得很好,但我无法在华为平板电脑(Mediapad X2)上运行。我使用的是Android 5.0 / API 21.
清单根据指南具有适当的权限/意图。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<receiver
android:name=".BootBroadcast"
android:enabled="true"
android:exported="true"
android:label="BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
</intent-filter>
</receiver>
我搜索SO以查找类似问题(BOOT_COMPLETED not working Android)并添加了QUICKBOOT_POWERON意图以及WAKE_LOCK权限,但没有任何更改。
广播接收器刚刚开始服务
public class BootBroadcast extends BroadcastReceiver {
private static final String TAG = "GrandUnion-Boot";
@Override
public void onReceive(Context context, Intent intent) {
Log.e(TAG, "Boot_Completed RECEIVED");
try{
context.startService(new Intent(context,MyService.class));
Log.i(TAG, "Boot Completed - start service");
}catch(Exception e){
Log.e(TAG,e.toString());
}
}
}
答案 0 :(得分:2)
经过长时间的研究后我发现,有些设备有自己的启动管理器。而华为Mediapad就是其中之一,所以:
答案 1 :(得分:0)
如果您的设备没有启动/启动管理器,请尝试检查应用程序管理器。在Lenovo的VibeUI上,应用程序管理器有一个“限制启动”选项,启用后会阻止应用程序接收BOOT_COMPLETED意图。