当学习发送广播的时候发现自己高版本Android端无法在本进程里接收到广播,所以参考以下操作发送成功。
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
//参数1:包名;参数2:接收器的路径
intent.setComponent(new ComponentName("com.example.mydemo","com.example.mydemo.MyBroadcastReceiver"));
sendBroadcast(intent);
}
但问题来了,发送跨进程广播的时候上面方法就不能用了。经查询之后发现一个既能在本进程,又能跨进程接收广播的好方法,其实很简单,加入一个判断就可以了。
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent);
//高版本加入此判断后本进程,跨进程都能发送接收到广播
if(Build.VERSION.SDK_INT >= 26) {
intent.addFlags(0x01000000);
}
sendBroadcast(intent);
}
测试版本Android9.0。
本人也是android开发的初学者,希望能对大家有所帮助。