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"/>

信息獲取:

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章