溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

android廣播的應(yīng)用

發(fā)布時(shí)間:2020-07-14 09:45:31 來(lái)源:網(wǎng)絡(luò) 閱讀:421 作者:秋寒526 欄目:移動(dòng)開發(fā)

一丶 broadcast receiver 廣播接收者

注:android的四大組件:

*activity用戶交互的界面

*content provider 暴露應(yīng)用程序隱私的數(shù)據(jù)給別的應(yīng)用程序
* broadcast receiver 廣播接收者
* service 后臺(tái)的服務(wù)

>Android手機(jī)里面的廣播接受者
>系統(tǒng)電量不足,電池充滿,插上充電器,sd卡被拔出,sd卡插上,撥出電話,接收到了短信,開機(jī)完畢,屏幕鎖定,屏幕解鎖
>在Android操作系統(tǒng)里面有很多的系統(tǒng)事件,Google工程師希望把這個(gè)事件告訴程序員(Android系統(tǒng)內(nèi)部?jī)?nèi)置了電臺(tái)),程序員注冊(cè)收音機(jī)就可以獲取對(duì)應(yīng)的事件

例如1:監(jiān)聽(tīng)用戶外撥的電話,獲取外撥電話的廣播事件(清單文件里面配置)

  1. 買個(gè)收音機(jī)
            寫個(gè)類繼承BroadcastReceiver
            OutCallReceiver extends BroadcastReceiver
    2. 買個(gè)電池
            <receiver android:name="com.xunfang.ipdail.OutCallReceiver" >
            </receiver>
    3. 調(diào)整到合適的頻道
         <intent-filter >
                    <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
             </intent-filter>

例如2:短信檢測(cè)廣播

    //拿到用戶接收的所有短信
        Object[] objs = (Object[]) intent.getExtras().get("pdus");
        //循環(huán)拿到短信
        for (Object obj : objs) {
            SmsMessage sms = SmsMessage.createFromPdu((byte[])obj) ;
            //拿到短信的內(nèi)容
            String body = sms.getMessageBody() ;
            //拿到短信的地址
            String address = sms.getOriginatingAddress() ;
            //拿到短信的發(fā)送時(shí)間
            long date = sms.getTimestampMillis() ;
            String d = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss").format(new Date(date)) ;
            
            System.out.println("內(nèi)容:" + body );
            System.out.println("地址:" + address );
            System.out.println("時(shí)間:" + d );
        }

清單里面配置合適的頻道:

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

</intent-filter>

例3:sd卡狀態(tài)監(jiān)聽(tīng)器

        //拿到動(dòng)作
        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被卸載了,沒(méi)事不要卸載它");
            Toast.makeText(context, "sd被卸載了,沒(méi)事不要卸載它", 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:應(yīng)用程序的卸載和安裝監(jiān)聽(tīng)

//拿到動(dòng)作
        String action  = intent.getAction() ;
        System.out.println(action);
        if("android.intent.action.PACKAGE_ADDED".equals(action)){
            System.out.println("應(yīng)用程序安裝了");
            Toast.makeText(context, "應(yīng)用程序安裝了", 0).show() ;
        }else if("android.intent.action.PACKAGE_REMOVED".equals(action)){
            System.out.println("應(yīng)用程序卸載了");
            Toast.makeText(context, "應(yīng)用程序卸載了", 0).show() ;
        }else if("android.intent.action.PACKAGE_REPLACED".equals(action)){
            System.out.println("應(yīng)用程序覆蓋安裝了");
            Toast.makeText(context, "應(yīng)用程序覆蓋安裝了", 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問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI