編輯:關於android開發
使用廣播接收者接收打電話的意圖,顯示號碼歸屬地
新建一個類OutCallReceiver繼承系統的BroadcastReceiver
重寫onReceive()方法
調用getResultData()方法,獲取到String電話號碼,查詢數據庫獲取到歸屬地
package com.qingguow.mobilesafe.receiver; import com.qingguow.mobilesafe.utils.NumberQueryAddressUtil; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; /** * 接收打電話廣播 * @author taoshihan * */ public class OutcallReceiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent arg1) { String phone=getResultData(); String address=NumberQueryAddressUtil.queryAddress(phone); System.out.println("111"+address); Toast.makeText(arg0, address, 1).show(); } }
清單文件中定義<receiver>節點,和<intent-filter>節點,設置<action>節點名稱,android:name=”android.intent.action.NEW_OUTGOING_CALL”
需要權限,android.permission.PROCESS_OUTGOING_CALLS
代碼注冊廣播
此時的廣播接收者,只要一打電話就會被調用,用戶體驗不好,我們使用代碼注冊廣播接收者,用設置中心的開啟監聽電話來電的部分來控制這個廣播
在服務裡面調用registerReceiver()方法,注冊廣播,參數:BroadcastReceiver對象,IntentFilter對象
獲取IntentFilter對象,調用IntentFilter對象的addAction()方法,參數:android.intent.action.NEW_OUTGOING_CALL
在服務裡面解除注冊廣播,調用unregisterReceiver()方法,參數:BroadcastReceiver對象
package com.qingguow.mobilesafe.service; import com.qingguow.mobilesafe.receiver.OutcallReceiver; import com.qingguow.mobilesafe.utils.NumberQueryAddressUtil; import android.app.Service; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.widget.Toast; /** * 來電顯示 * * @author taoshihan * */ public class AddressService extends Service { private TelephonyManager tm; private MyPhoneStateListener phoneStateListener; private OutcallReceiver outcallReceiver; @Override public IBinder onBind(Intent arg0) { // TODO Auto-generated method stub return null; } /** * 服務創建 */ @Override public void onCreate() { super.onCreate(); tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); phoneStateListener = new MyPhoneStateListener(); tm.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE); //注冊廣播 outcallReceiver=new OutcallReceiver(); IntentFilter filter=new IntentFilter(); filter.addAction("android.intent.action.NEW_OUTGOING_CALL"); registerReceiver(outcallReceiver, filter); } private class MyPhoneStateListener extends PhoneStateListener { @Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber); switch (state) { case TelephonyManager.CALL_STATE_RINGING: String info = NumberQueryAddressUtil .queryAddress(incomingNumber); Toast.makeText(getApplicationContext(), info, 1).show(); break; default: break; } } } /** * 服務銷毀 */ @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); //取消監聽 tm.listen(phoneStateListener, PhoneStateListener.LISTEN_NONE); phoneStateListener=null; //解除注冊廣播 unregisterReceiver(outcallReceiver); outcallReceiver=null; } }
Android自定義View入門(一),androidview最近在寫一個關於音樂播放的應用,寫到播放界面UI時,就想自己實現的一個播放界面。那麼如何實現自定義View呢
Android事件分發機制源碼分析 小小感慨一下,做android有一段時間了,一直以來都是習慣整理筆記存到有道筆記上,沒有寫博客的習慣。以後逐步分類整理出來,也算&ld
2015烏鎮互聯網大會,母嬰美食快餐類APP入眼,2015烏鎮重構與用戶之間的信任感將是這一細分行業的首要任務。未來誰能真正贏得用戶的信任,誰才能笑到最後。 這幾日,整
高仿人人網客戶端Android版項目源碼,高仿android高仿人人網客戶端,有興趣的盆友可以研究下,裡面主要包含的一些UI設計與交互。(注:項目中有少許問題,apk能運