定义一个广播接受者:
package com.ustc.mobilemanager.receiver;
import com.ustc.mobilemanager.db.dao.NumberAddressQueryUtils;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
public class OutCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 这就是我们拿到的拨出去的电话号码
String phone = getResultData();
// 查询数据库
String address = NumberAddressQueryUtils.queryNumber(phone);
Toast.makeText(context, address, 1).show();
}
}
getResultData得到的即时拨打的号码。但是这样有个问题,这个广播接受者就算应用死掉了他还是在监听状态中,我们把这个类移到服务中,使用代码注册。
package com.ustc.mobilemanager.service;
import com.ustc.mobilemanager.db.dao.NumberAddressQueryUtils;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class AddressService extends Service {
private TelephonyManager tm;
private MyListenerPhone listenerPhone;
private OutCallReceiver outCallReceiver;
@Override
public IBinder onBind(Intent intent) {
return null;
}
//服务里面的内部类
class OutCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// 这就是我们拿到的拨出去的电话号码
String phone = getResultData();
// 查询数据库
String address = NumberAddressQueryUtils.queryNumber(phone);
Toast.makeText(context, address, 1).show();
}
}
private class MyListenerPhone extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:// 来电铃声响起
// 查询数据库的操作
String address = NumberAddressQueryUtils
.queryNumber(incomingNumber);
Toast.makeText(getApplicationContext(), address, 1).show();
break;
default:
break;
}
}
}
@Override
public void onCreate() {
super.onCreate();
tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
listenerPhone = new MyListenerPhone();
tm.listen(listenerPhone, PhoneStateListener.LISTEN_CALL_STATE);
//代码去注册一个广播接受者
outCallReceiver = new OutCallReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.NEW_OUTGOING_CALL");
registerReceiver(outCallReceiver, filter);
}
@Override
public void onDestroy() {
super.onDestroy();
tm.listen(listenerPhone, PhoneStateListener.LISTEN_NONE);
listenerPhone = null;
//取消注册
unregisterReceiver(outCallReceiver);
outCallReceiver = null;
}
}
在onCreate中实例化,在onDestroy中取消注册。