关于自定义广播接收不到的问题
关于自定义广播接收不到的问题
8.0及以上版本,自定义广播接收不到
在最近的项目中,需要使用广播监听PCO状态值的改变,发现发送的广播接收不到,查看log后,发现
Background execution not allowed: receiving Intent { act=com.hotpepper.datasaver.action.statechange flg=0x10 (has extras) } to com.android.settings/.datausage.PcoReceiver
在查阅资料后,发现是系统对隐式广播做了限制,目前查到两种方法
- 在不同包间接收广播 ,
Intent.addFlags(0x01000000);//加上这句话,可以解决在android8.0系统以上2个module之间发送广播接收不到的问题}
; - 在同一个包内发送:
intent.setComponent(new ComponentName("com.android.settings","com.android.settings.datausage.PcoReceiver"));
adb 发送广播
adb shell am broadcast -a “com.hotpepper.datasaver.action.statechange” --es prostate 1 -f 0x01000000
adb shell am broadcast 后面的参数有:
[-a ]
[-d <DATA_URI>]
[-t <MIME_TYPE>]
[-c [-c ] …]
[-e|–es <EXTRA_KEY> <EXTRA_STRING_VALUE> …]
[–ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> …]
[-e|–ei <EXTRA_KEY> <EXTRA_INT_VALUE> …]
[-n ]
[-f ] []