Android常用的系统广播的使用

 短信广播:
注册:

<receiver android:name="receiver.SmsReceiver">

    <intent-filter>

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

权限:

 <uses-permission android:name="android.permission.RECEIVE_SMS"/>

广播接收者:

public class SmsReceiver extends BroadcastReceiver{
    //获取短信到来的广播,并取出短信内容
    //所有的广播数据,都存在intent参数中
    @Override
    public void onReceive(Context context, Intent intent) {

        Object[] obj = (Object[]) intent.getExtras().get("pdus");

        StringBuilder builder = new StringBuilder();
        for (Object o:obj) {
            //获取每一条短信对象
            SmsMessage mess = SmsMessage.createFromPdu((byte[])o);
            Log.i("","==== 短信来电号码"+mess.getDisplayOriginatingAddress());
            builder.append(mess.getMessageBody());
        }

        Log.i("","===  短信完整内容为:"+builder.toString());
    }
}

 耳机插拔广播:
广播action名称:AudioManager.ACTION_HEADSET_PLUG
广播接收后的处理:

@Override
    public void onReceive(Context context, Intent intent) {
        if (intent.hasExtra("state")){
            if (intent.getIntExtra("state" , 0)  == 1){
                Toast.makeText(context, "耳机已插入!", Toast.LENGTH_LONG).show();
            } else if(intent.getIntExtra("state" , 0) == 0){
                Toast.makeText(context, "耳机已拔出", Toast.LENGTH_LONG).show();
            }
        }
    }

 网络状态:
广播动作:ConnectivityManager.CONNECTIVITY_ACTION
权限:

`<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />`

@Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(ConnectivityManager.CONNECTIVITY_ACTION)) {

            mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
            // 获取网络状态信息
            netInfo = mConnectivityManager.getActiveNetworkInfo();
            if (netInfo != null && netInfo.isAvailable()) {
                String name = netInfo.getTypeName();

                if (netInfo.getType() == ConnectivityManager.TYPE_WIFI) {
                    //WiFi网络
                    Toast.makeText(context, "WiFi网络!", Toast.LENGTH_LONG).show();

                } else if (netInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
                    //有线网络
                    Toast.makeText(context, "以太网有线网络!", Toast.LENGTH_LONG).show();

                } else if (netInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
                    //移动网络
                    Toast.makeText(context, "移动网络!", Toast.LENGTH_LONG).show();
                }
            } else {
                //网络断开
                Toast.makeText(context, "无网络状态!", Toast.LENGTH_LONG).show();
            }
        }
    }

 电池状态,电池电量变化广播:
广播action名称:
Intent.ACTION_BATTERY_CHANGED
权限:

<uses-permission android:name="android.permission.BATTERY_STATS"/>

信息获取:

这里写图片描述

这里写图片描述

这里写图片描述

发布了34 篇原创文章 · 获赞 3 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/The_king_of_Asia/article/details/54141498
今日推荐