編輯:關於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
Android自定義View入門(一),androidview最近在寫一個關於音樂播放的應用,寫到播放界面UI時,就想自己實現的一個播放界面。那麼如何實現自定義View呢
Android事件分發機制源碼分析
Android事件分發機制源碼分析 小小感慨一下,做android有一段時間了,一直以來都是習慣整理筆記存到有道筆記上,沒有寫博客的習慣。以後逐步分類整理出來,也算&ld
2015烏鎮互聯網大會,母嬰美食快餐類APP入眼,2015烏鎮
2015烏鎮互聯網大會,母嬰美食快餐類APP入眼,2015烏鎮重構與用戶之間的信任感將是這一細分行業的首要任務。未來誰能真正贏得用戶的信任,誰才能笑到最後。 這幾日,整
高仿人人網客戶端Android版項目源碼,高仿android
高仿人人網客戶端Android版項目源碼,高仿android高仿人人網客戶端,有興趣的盆友可以研究下,裡面主要包含的一些UI設計與交互。(注:項目中有少許問題,apk能運