我的问题就是无法拦截来电,无法显示来电的号码,因为我得到的是一个空的来电号码,我尝试了很多方法,都无法解决,
这是源代码
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.example.mobilegualdar.db.tool.DBStoryUtils;
public class PhoneReceiver extends BroadcastReceiver {
private TelephonyManager tm;
private MyListener listen;
private DBStoryUtils dao;
@Override
public void onReceive(Context context, Intent intent) {
tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); //电话管理服务
listen = new MyListener();
tm.listen(listen, PhoneStateListener.LISTEN_CALL_STATE);
dao = new DBStoryUtils(context);
}
private class MyListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String phoneNumber) {
super.onCallStateChanged(state, phoneNumber);
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
System.out.println("挂断");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
System.out.println("接听");
break;
case TelephonyManager.CALL_STATE_RINGING: //铃响
String result = dao.findModel(phoneNumber);
if ("电话拦截".equals(result) || "全部拦截".equals(result)) {
Log.i("MainActivity", "挂断电话" + phoneNumber);
}
break;
}
}
}
}
这是在服务中注册通知
PhoneReceiver phoneReceiver = new PhoneReceiver();
IntentFilter pfilter = new IntentFilter("android.intent.action.PHONE_STATE");
//pfilter.addAction("android.intent.action.NEW_OUTGOING_CALL");
pfilter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); //设置最高优先级
registerReceiver(phoneReceiver,pfilter);