MOMO173
人可能在奔溃的边缘
MOMO
Android8.0以上无法收到自定义广播(静态广播)
Android8.0以上无法收到自定义广播(静态广播)

继续学习android,接下来是接触广播的时候,广播的笔记还没整理好所以文章就先不做了
但是在学习的过程中遇到了一个问题,就是标题所写的,8.0以上无法接受自定义的广播
我学习的书系统是基于android7的,而我调式的系统是9.0,我就说怎么怎么弄都不来/(ㄒoㄒ)/

https://i.loli.net/2019/05/08/5cd1bdc10fbad.png

这里有两个方法解决:
(1)使用动态广播代替静态广播

(2)保留原来的静态广播,但是加入Component参数
这里先说第二个
顺便在这里把自定义的广播的方法也做笔记了

自定义广播

首先新建一个按钮来发送广播请求,怎么新建就不说了,都会
新建一个接收器BroadcastReceiver,用来接收上面发出的广播。

public class MyReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "received in MyBroadcastReceiver", Toast.LENGTH_SHORT).show();
        Log.d("Broadcast1","广播接收");
    }

}

然后去AndroidManifest.xml里面去定义要接受什么广播

  <receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.example.broadcasttest.MY_BROADCAST"/>
        //这里说明了我们要接受com.example.broadcasttest.MY_BROADCAST
            </intent-filter>
        </receiver>

然后去修改MainActivity

       Button button = (Button) findViewById(R.id.button);
        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.MyReceiver"));
                sendBroadcast(intent);
                Log.d("Broadcast1","广播发送");
            }
        });

    }

这里和自定义广播的区别不大,主要是在发送广播时加入ComponentName()
ComponentName会包含两个参数:参数1是是自定义广播的包名,参数2是自定义广播的路径

没有标签
首页      学习      Android8.0以上无法收到自定义广播(静态广播)
https://secure.gravatar.com/avatar/5967493088983a79f7ef15e91c8e0598?s=256&d=mm&r=g

momo

文章作者

MOMO

Android8.0以上无法收到自定义广播(静态广播)
继续学习android,接下来是接触广播的时候,广播的笔记还没整理好所以文章就先不做了 但是在学习的过程中遇到了一个问题,就是标题所写的,8.0以上无法接受自定义的广播 我学习的书系统是…
扫描二维码继续阅读
2019-05-08
功能
关注我