国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

學習Android廣播小結

2019-11-09 17:51:35
字體:
來源:轉載
供稿:網友

最近在網上學習了關于Android廣播這個技術點,下面我將我了解得分享給大家,不喜勿噴哦! 廣播這個東西很好了解吧!現實中就有很多這樣的例子,我就不一一說了。 廣播有很多種:自定義廣播(動態廣播 靜態廣播 無序廣播 有序廣播)黏性廣播(已過時) 系統廣播等等,廣播有發送者就有接收者,而且不能超出一個范圍(舉個例子:同一部手機),主要用到 Intent傳值接收值 。 自定義廣播就是自己發自己收,新建兩個Module 項目,一個作為發送者,一個作為接收者。廣播發送者得到Intent,給自己去一個名字。寫入你需要的值, sendBroadcast(intent) 發送出去。廣播接收者就是在項目新建一個類繼承于BroadcastReceiver,重寫它的方法(就一個),判斷你得到廣播名字是否和發送者的一致,然后打印,但是還沒完,還需要配置一下。配置有兩種方式:清單文件配置(AndroidManifest) java代碼配置。 java代碼配置:

PRivate MyReceived01 myReceived01;private IntentFilter intentFilter;@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView r1_main_text= (TextView) findViewById(R.id.r1_main_text); Intent intent=new Intent(); String data=intent.getStringExtra("data"); r1_main_text.setText(data); //new一個接受者 myReceived01 = new MyReceived01(); //new一個intent過濾器 intentFilter = new IntentFilter(); //給intent過濾器增加行為 intentFilter.addAction("com.example.yang_broadcastsender.1211");}//動態廣播 用java代碼配置@Overrideprotected void onResume() { super.onResume(); //動態注冊廣播 registerReceiver(myReceived01,intentFilter);}@Overrideprotected void onDestroy() { super.onDestroy(); //注銷廣播 unregisterReceiver unregisterReceiver(myReceived01);}

我用的是清單文件配置: //name就是廣播名字 這樣就可以了。 還有就是動態廣播和靜態廣播,它們性質都是一樣的,有三點不同:動態廣播用代碼配置, 靜態廣播用清單文件配置,而且動態廣播的優先級必靜態廣播要高, 最后一個就是作為接收者一方,動態廣播退出程序就接收不到廣播,這個可以用黏性廣播解決: /**發送黏性廣播 * 動態廣播退出程序就銷毀了接受不了廣播 * 用黏性廣播可以做到 離線接受 */ sendStickyBroadcast(intent); 靜態廣播都可以接受。 系統廣播就有很多了,具體親們可以去網上下個廣播大全,有相對應的名字,我這里就做了一個電話監聽: if (“android.intent.action.PHONE_STATE”.equals(intent.getAction())){ //獲取電話號碼 String phone=intent.getStringExtra(“incoming_number”); Log.i(“test”,”有電話進來了,”+phone); //獲取電話管理者 TelephonyManager manager= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); //得到電話的狀態 int s=manager.getCallState(); switch (s) { case TelephonyManager.CALL_STATE_RINGING: Log.i(“tt”,”電話打入:”+phone); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.i(“tt”,”電話接通:”+phone); break; case TelephonyManager.CALL_STATE_IDLE: Log.i(“tt”,”電話掛斷:”+phone); break; } } 方法是一樣的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 望谟县| 敖汉旗| 呼图壁县| 日土县| 平舆县| 河津市| 南澳县| 西充县| 盐城市| 玉屏| 广德县| 长海县| 全椒县| 民勤县| 阿拉尔市| 金乡县| 交城县| 锡林浩特市| 长顺县| 大足县| 蚌埠市| 辽宁省| 兴国县| 阜新市| 凤山县| 通州市| 锦屏县| 甘谷县| 富锦市| 襄樊市| 历史| 合肥市| 鱼台县| 宣城市| 邳州市| 依安县| 喜德县| 呼伦贝尔市| 德格县| 阿尔山市| 贵州省|