电话打入和打出的区别
打入
TelephonyManager mTm = (TelephonyManager) this
.getSystemService(Context.TELEPHONY_SERVICE);
mCallListener = new CallInListener();
mTm.listen(mCallListener, PhoneStateListener.LISTEN_CALL_STATE);
private class CallInListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_RINGING) {
// 查号码得到地址
String address = NumberAddressDao.findAddress(
NumberAddressService.this, incomingNumber);
Log.d(TAG,"号码归属地是 : " + address);
// Toast.makeText(NumberAddressService.this,
// “号码归属地是 : ” + address, 1).show();
mAddressToast.show(address);
}else if (state == TelephonyManager.CALL_STATE_IDLE) {
mAddressToast.hide();
}
}
}
打出
mCallOutReceiver = new CallOutReceiver();
IntentFilter filter =new IntentFilter();
filter.addAction(Intent.ACTION_NEW_OUTGOING_CALL);
registerReceiver(mCallOutReceiver,filter);
private class CallOutReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
String address = NumberAddressDao.findAddress(NumberAddressService.this, number);
// Toast.makeText(NumberAddressService.this,
// “号码归属地是 : ” + address, 1).show();
mAddressToast.show(address);
}
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "归属地显示服务关闭");
mTm.listen(mCallListener,PhoneStateListener.LISTEN_NONE);
unregisterReceiver(mCallOutReceiver);
}
权限