《第一行代码》学习广播时遇到的问题

1.connectivityManager.getActiveNetworkInfo()报错
解决办法:
在注册文件中添加如下代码:

《第一行代码》学习广播时遇到的问题_第1张图片2.自定义广播收不到

由于版本原因,自定义广播多了限制。
在书上P179基础上(MainActivity)添加代码即可:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");

       intent.setComponent(new ComponentName("com.example.broadcasttest",
               "com.example.broadcasttest.MyBroadcastReceiver"));
        sendBroadcast(intent);
    }
});

3有序广播第二个APP收不到的问题

在上一个App的MainActivity中的代码:

Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");

intent.setComponent(new ComponentName("com.example.broadcasttest",
        "com.example.broadcasttest.MyBroadcastReceiver"));
 sendBroadcast(intent);
 

"com.example.broadcasttest"是自定义广播的包名,
"com.example.broadcasttest.MyBroadcastReceiver"是自定义广播接收器的位置。

第二个APP收不到是因为这个把自定义广播的报名和接收器的位置都定好了,所以只要再来一个Intent就能解决问题了
如下:

Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");
 Intent intent2=new Intent("com.example.broadcasttest.MY_BROADCAST");
intent.setComponent(new ComponentName("com.example.broadcasttest",
        "com.example.broadcasttest.MyBroadcastReceiver"));
 intent2.setComponent(new ComponentName("com.example.broadcasttest2",
         "com.example.broadcasttest2.MyReceiver"));
 sendBroadcast(intent);
 sendBroadcast(intent2);

4.LocalBroadcastManager需要添加库依赖
方法:添加链接描述

添加后在bulid.gradle中 implementation 'com.android.support:support-v4:28.0.0’这句会划红线
《第一行代码》学习广播时遇到的问题_第2张图片
但编译还可以执行,功能也能实现。
如果先把红线去掉,只需将28改为29:
《第一行代码》学习广播时遇到的问题_第3张图片

你可能感兴趣的:(《第一行代码》学习广播时遇到的问题)