问题1:静态注册广播发送不出去,自定义的Receiver收不到,反复检查没发现错误,后来知道发送广播时必须指定Receiver的包和Receiver的位置。eg:
intent.setComponent(new ComponentName("com.example.myapplication",
"com.example.myapplication.Custom"));
问题2:动态注册按原来的方法直接用registerReceiver(custom2,filter)会让程序崩溃,对你没看错是直接崩溃,后来发现又是安卓版本的锅,registerReceiver新版本多了一个参数(不知道有啥用)不写就会崩溃。改成如下代码可正常运行:
Custom2 custom2=new Custom2();
IntentFilter filter = new IntentFilter(ActionUtils.ACTION_MOVE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
registerReceiver(custom2,filter, Context.RECEIVER_EXPORTED);
}
吐槽:版本问题真的麻烦,要排查半天,而且更新了也没发现什么大用,反而bug一堆。