关于Android广播接收器无法接收自定义广播消息

我碰到这个问题的时候去搜,找到的是因为安卓版本过高,系统比较严格,因此发送广播的时候需要多点步骤,但是在看书的过程中,又发现好像这个还分动态注册和静态注册。其实差别只是多一行少一行的事,下面分别说说,PS.我的avd是Android 28。

静态注册

如果是在AndroidManifest.xml中注册的接收器,在发送的时候需要多调用一个setComponent()方法,其中第一个参数是包名,第二个参数是接收器的类名。

...
Intent intent=new Intent("com.example.k.androidpractice_1.MY_BROADCAST");
intent.setComponent(new ComponentName("com.example.k.androidpractice_1","com.example.k.androidpractice_1.MyBootReceiver"));
sendBroadcast(intent);
...

动态注册

在代码中动态注册的接收器,就不需要调用这个方法了,直接send Intent即可。

Intent intent=new Intent("com.example.k.androidpractice_1.FORCE_LOGOUT");
sendBroadcast(intent);

目前我发现是这样,也只是发现解决方法,不太知道其中的原理之类的,有大佬乐意的话可以指点一二也感激不尽。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章