我创建了一个始终在设备完成启动后启动服务的应用程序。 这是清单代码。
<receiver>
android:name="StartMyServiceAtBootReceiver"
android:directBootAware ="true"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
<action android:name="android.intent.action.REBOOT"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
启动完成后,该服务始终在某些设备中启动,但是在我自己的运行android 7.0的设备中,除非我使用root访问权限将应用程序转换为系统应用程序,否则启动完成的服务不会启动。有人可以告诉我如何使应用程序在启动时完成启动服务而不将其转换为系统应用程序吗?
答案 0 :(得分:0)
首先
receiver android:name =“ StartMyServiceAtBootReceiver”
您的收件人的路径应该写在这里,例如:
<receiver android:name=".receiver.BootReceiver">
第一个点提示您到达软件包根目录的路径。
创建一个BroadcastReceiver并注册以接收ACTION_BOOT_COMPLETED。您还需要RECEIVE_BOOT_COMPLETED权限。
阅读:Listening For and Broadcasting Global Messages和Setting Alarms
答案 1 :(得分:0)
尝试进入清单
<receiver
android:name=".AutoStart"
android:enabled="true"
android:exported="true" >
<intent-filter android:priority="500" >
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
确保还包括完整的启动权限。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
也请仔细阅读this答案