为什么三星SM-J5008(Lollipop)在重启后没有激活onReceive()?

时间:2018-05-24 06:44:51

标签: android

我在系统重新启动后使用代码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")
    }


}

2 个答案:

答案 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的完全限定名称,看看它是否适合您。