日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android广播常用案例

發布時間:2024/1/1 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android广播常用案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ip撥號器

以撥打電話廣播接收為例介紹步驟: 1. 定義一個類 繼承 BroadCastReceiver ,并重寫onReceive函數
2. 在清單文件注冊廣播接收 Receiver ? action ? <receiver android:name="com.itheima.ipcall.OutCallBroadCastReceiver" /> <intent-filter >
? ? ? ? ? ?<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
3. 廣播事件到來之后就會執行onReceive
注意:即使廣播接收者沒有運行,當廣播消息到達的時候,系統會自動啟動廣播接收者的進程,調用onReceive方法,接收消息。
4.0版本之后為了安全考慮,要求應用程序必須要有界面,必須被用戶運行過一次(待驗證),廣播接受者才會生效
4.0版本的強行停止相當于凍結一個應用,一旦應用程序被用戶強行停止了,廣播接受者就不會生效了。直到用戶手工打開這個應用程序為止。

在onReceive中獲取數據并修改(NEW_OUTGOING_CALL廣播為有序廣播,可以修改數據下面會介紹有序廣播) public class OutGoingCallReceiver extends BroadcastReceiver{//當我接收到 外撥電話的事件的時候 會執行該方法 @Overridepublic void onReceive(Context context, Intent intent) {//1 獲取到當前我撥打的號碼 String number = getResultData(); //獲取我們外撥電話號碼 //2 獲取ip號碼SharedPreferences sp = context.getSharedPreferences("config", 0);String ipNumber = sp.getString("number", "");//3 把ipnumber 加入到 撥打號碼的前面if (number.startsWith("0")) {String newNumber = ipNumber + number; //新號碼 // 改變當前 廣播的結果 setResultData(newNumber); }}}

短信監聽器

主要配置

<uses-permission android:name="android.permission.RECEIVE_SMS"/><receiver android:name="com.itheima.smslistener.SMSBroadCastReceiver"><intent-filter ><action android:name="android.provider.Telephony.SMS_RECEIVED" /></intent-filter></receiver>

onReceive代碼

public class SMSBroadCastReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {Object[] objs = (Object[]) intent.getExtras().get("pdus");for(Object obj : objs){SmsMessage sms = SmsMessage.createFromPdu((byte[]) obj);String content = sms.getMessageBody();String srcPhone = sms.getOriginatingAddress();System.out.println("content========"+content);System.out.println("srcPhone========"+srcPhone);}}

SD卡狀態監聽

主要配置

<receiver android:name="com.itheima.sdlistener.SDBroadCastReceiver"><intent-filter ><action android:name="android.intent.action.MEDIA_MOUNTED" /><action android:name="android.intent.action.MEDIA_UNMOUNTED" /><action android:name="android.intent.action.MEDIA_REMOVED" /><!-- 必須加上data這個屬性 --><data android:scheme="file"/></intent-filter></receiver>

onReceive代碼

public class SDBroadCastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if("android.intent.action.MEDIA_MOUNTED".equals(action)){Toast.makeText(context, "已經插上了SD卡.................", 0).show();}if("android.intent.action.MEDIA_UNMOUNTED".equals(action)){Toast.makeText(context, "拔掉了SD卡.................", 0).show();}if("android.intent.action.MEDIA_REMOVED".equals(action)){Toast.makeText(context, " 移除了SD卡.................", 0).show();}} }

開機啟動監聽

目的

讓軟件開機后打開,并關閉不了:
? ? 禁用返回鍵和最小化鍵(小房子鍵);

主要配置

<receiver android:name="com.itheima.lesuo.BootCompletedBroadCastReceiver"><intent-filter ><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter></receiver>

onReceive代碼

public class BootCompletedBroadCastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//開啟mainactivityIntent i = new Intent(context,MainActivity.class);//告訴activity自己來維護任務棧,如果任務棧沒有當前任務,就會重新創建一個任務放入任務棧i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);System.out.println("***********88888888888啟動完成*********************************");}}

軟件卸載安裝

主要配置

<receiver android:name="com.itheima.azxz.AZXZBroadCastReceiver"><intent-filter ><action android:name="android.intent.action.PACKAGE_INSTALL" /><action android:name="android.intent.action.PACKAGE_REMOVED" /><action android:name="android.intent.action.PACKAGE_ADDED" /><!-- 必須添加這個屬性 --><data android:scheme="package"/></intent-filter></receiver>

onReceive代碼

public class AZXZBroadCastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();if("android.intent.action.PACKAGE_INSTALL".equals(action)){Toast.makeText(context, "安裝了一個新軟件...................", 0).show();}if("android.intent.action.PACKAGE_REMOVED".equals(action)){Toast.makeText(context, "卸載了一個軟件...................", 0).show();}if("android.intent.action.PACKAGE_REPLACED".equals(action)){Toast.makeText(context, "重新安裝了一個軟件...................", 0).show();}}}

發送自定義廣播(無序廣播)

? ? 創建廣播發送者的步驟:

//創建一個傳遞消息的意圖對象
Intent intent = new Intent();
//設置要廣播的事件類型
intent.setAction("com.itheima.broadcast.HMSSDT");
//設置廣播的消息數據
intent.putExtra("news", "49期,晚上12點半準時開播.........");
//發送一個廣播消息
sendBroadcast(intent);

有序廣播和無序廣播

* 無序廣播:

廣播接收者只要注冊接收相應的事件類型,就能接收到的廣播;
? //發送一個廣播消息(無序廣播)
sendBroadcast(intent);

* 有序廣播:

當廣播把消息發送出去后,消息會根據廣播接收者的優先級從高到低一級一級地下發消息。
可以攔截消息,也可以修改消息。

? ?發送有序廣播:

Intent intent = new Intent();intent.setAction("com.itheima.orderedbroadcast.ZYFFNTBT");//發送一個有序的廣播//intent 意圖//permission 指定接收者需要添加了權限//resultReceiver 指定哪個廣播接收者最后接到消息(這個廣播接收者不需要注冊也可以接收廣播)//scheduler 消息處理器//initialCode 給消息指定初始代碼//initialData 指定消息的數據//initialExtras 指定額外的參數sendOrderedBroadcast(intent, null, null, null, 1, "國務院開始發放2014年農田補貼:900元", null);


? 有序廣播接收者的配置文件:

<receiver android:name="com.itheima.zf.ProvinceBroadCastReceiver"><intent-filter android:priority="1000" ><action android:name="com.itheima.orderedbroadcast.ZYFFNTBT"/></intent-filter></receiver>

?有序廣播接收者的代碼:

String info = getResultData();System.out.println("---------我是省級人民政府,已經接收到了中央發的消息:"+info);//Toast.makeText(context, "我是省級人民政府,已經接收到了中央發的消息:"+info, 0).show();setResultData("國務院開始發放2014年農田補貼:400元");






總結

以上是生活随笔為你收集整理的Android广播常用案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。