我在系统重新启动后使用代码A执行某些操作,当我使用API 22和23在Android Emulator中测试代码时,它就可以了。
但是我发现onReceive
在我使用Android 5.1的真实手机三星SM-J5008进行测试时不会触发,为什么?
代码A
<receiver android:name="bll.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
class BootReceiver : BroadcastReceiver() {
override fun onReceive(mContext: Context, intent: Intent) {
Log.e("My","Test")
}
}
答案 0 :(得分:0)
也许您缺少定义Boot complete receiver
的权限<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
如果已经获得许可,那么请在清单中进行更改。
<receiver
android:name=".bll.BootReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
答案 1 :(得分:0)
尝试在<receiver android:name="YOUR_NAMESPACE.BootReceiver">
中传递BroadCastReceiver的完全限定名称,看看它是否适合您。