温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

android广播的应用

发布时间:2020-07-14 09:45:31 来源:网络 阅读:424 作者:秋寒526 栏目:移动开发

一丶 broadcast receiver 广播接收者

注:android的四大组件:

*activity用户交互的界面

*content provider 暴露应用程序隐私的数据给别的应用程序
* broadcast receiver 广播接收者
* service 后台的服务

>Android手机里面的广播接受者
>系统电量不足,电池充满,插上充电器,sd卡被拔出,sd卡插上,拨出电话,接收到了短信,开机完毕,屏幕锁定,屏幕解锁
>在Android操作系统里面有很多的系统事件,Google工程师希望把这个事件告诉程序员(Android系统内部内置了电台),程序员注册收音机就可以获取对应的事件

例如1:监听用户外拨的电话,获取外拨电话的广播事件(清单文件里面配置)

  1. 买个收音机
            写个类继承BroadcastReceiver
            OutCallReceiver extends BroadcastReceiver
    2. 买个电池
            <receiver android:name="com.xunfang.ipdail.OutCallReceiver" >
            </receiver>
    3. 调整到合适的频道
         <intent-filter >
                    <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
             </intent-filter>

例如2:短信检测广播

    //拿到用户接收的所有短信
        Object[] objs = (Object[]) intent.getExtras().get("pdus");
        //循环拿到短信
        for (Object obj : objs) {
            SmsMessage sms = SmsMessage.createFromPdu((byte[])obj) ;
            //拿到短信的内容
            String body = sms.getMessageBody() ;
            //拿到短信的地址
            String address = sms.getOriginatingAddress() ;
            //拿到短信的发送时间
            long date = sms.getTimestampMillis() ;
            String d = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss").format(new Date(date)) ;
            
            System.out.println("内容:" + body );
            System.out.println("地址:" + address );
            System.out.println("时间:" + d );
        }

清单里面配置合适的频道:

<intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>      

</intent-filter>

例3:sd卡状态监听器

        //拿到动作
        String action  = intent.getAction() ;
        if("android.intent.action.MEDIA_MOUNTED".equals(action)){
            System.out.println("sd卡装上了,可以使用了");
            Toast.makeText(context, "sd卡安装了", 0).show() ;
        }else if("android.intent.action.MEDIA_REMOVED".equals(action)){
            System.out.println("sd被拔掉了,不要拔它");
            Toast.makeText(context, "sd被拔掉了,不要拔它", 0).show() ;
        }else if("android.intent.action.MEDIA_UNMOUNTED".equals(action)){
            System.out.println("sd被卸载了,没事不要卸载它");
            Toast.makeText(context, "sd被卸载了,没事不要卸载它", 0).show() ;
        }

清单配置:

<intent-filter>
                <action android:name="android.intent.action.MEDIA_MOUNTED"  />
                <action android:name="android.intent.action.MEDIA_REMOVED"  />
                <action android:name="android.intent.action.MEDIA_UNMOUNTED"  />
                <data android:scheme="file"/>
</intent-filter>

例4:应用程序的卸载和安装监听

//拿到动作
        String action  = intent.getAction() ;
        System.out.println(action);
        if("android.intent.action.PACKAGE_ADDED".equals(action)){
            System.out.println("应用程序安装了");
            Toast.makeText(context, "应用程序安装了", 0).show() ;
        }else if("android.intent.action.PACKAGE_REMOVED".equals(action)){
            System.out.println("应用程序卸载了");
            Toast.makeText(context, "应用程序卸载了", 0).show() ;
        }else if("android.intent.action.PACKAGE_REPLACED".equals(action)){
            System.out.println("应用程序覆盖安装了");
            Toast.makeText(context, "应用程序覆盖安装了", 0).show() ;
        }

清单里面的频道配置:

<intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED"  />
                <action android:name="android.intent.action.PACKAGE_REMOVED"  />
                <action android:name="android.intent.action.PACKAGE_REPLACED"  />
                <data android:scheme="package"/>
</intent-filter>


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI