Android 8.1发送广播受限问题

之前在android7.0以及之前的版本中,发广播是一件很容易的,一句代码搞定:隐式广播,sendBroadcast(new Intent("android.intent.action.test"));

问题来了,可是在8.1上这样是行不通的。在PhoneWindowManager.java

发按键广播,就是接受不到,抓了log,报错如下:

W/BroadcastQueue: Background execution not allowed: receiving Intent { act=android.intent.action.test flg=0x10 (has extras) 

翻了相关资料后,明白了。Android O版本对后台进程做了限制广播的发送,对隐式广播也做了限制;必须要指定接受广播类的包名和类名:

Intent intent = new Intent("android.intent.action.test");
intent.setComponent(new ComponentName("接受广播的类的包名","接受广播的类的包名+类名"));
            mContext.sendBroadcast(intent);

 

你可能感兴趣的:(Android,Android8.1)