我是靠谱客的博主 失眠飞机,最近开发中收集的这篇文章主要介绍动态注册广播及接收广播,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

动态注册不用在AndroidManifest.xml中声明,直接在代码中注册系统广播和自定义广播,注意使用file来匹配隐式Intent,IntentFilter类似Intent打包数据

        UsbStateReceiver receiver = new UsbStateReceiver();          //new一个广播接收器
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);           //注册 U盘拔出广播
        filter.addAction(Intent.ACTION_MEDIA_MOUNTED);           //注册U盘插入广播
        filter.addAction(Intent.ACTION_MEDIA_REMOVED);
        filter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
        filter.addDataScheme("file");                                  // 需要为过滤器设置URL匹配标签,使用file来匹配隐式intent,否则无法接收U盘插拔事件,非常重要
//        filter.addAction("com.lishun");                                //注册 自定义com.lishun广播
        this.registerReceiver(receiver, filter);                       //注册广播

需要自定义一个方法来继承BroadcastReceiver接收广播,并在广播到来时自动调用onReceive

        public class UsbStateReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {  //onReceive会在广播来的时候自动调用
            String action = intent.getAction();
//            Log.d(TAG, "onReceive: *************************收到广播");
            Log.d(TAG, "onReceive: "+action);
            switch (action) {
                case Intent.ACTION_MEDIA_MOUNTED:          //收到U盘插入广播
                    Toast.makeText(context, "U盘已插入", Toast.LENGTH_SHORT).show();
                    Log.d(TAG, "onReceive: U盘已插入" + intent.getData().getPath());
                    String fromFile = intent.getData().getPath();   //得到U盘的根路径
                    String toFile = "//sdcard";
                    readUDiskDevsList(fromFile, toFile);            //将文件从U盘复制到android设备
                    break;
                case Intent.ACTION_MEDIA_UNMOUNTED:       //收到U盘拔出广播
                    Toast.makeText(context, "U盘已拔出", Toast.LENGTH_SHORT).show();
                    Log.d(TAG, "onReceive: U盘已拔出");
                    break;
                default:
                    break;
            }
        }
    }

 

最后

以上就是失眠飞机为你收集整理的动态注册广播及接收广播的全部内容,希望文章能够帮你解决动态注册广播及接收广播所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部