「已注销」 2021-09-12 18:55 采纳率: 100%
浏览 26
已结题

tm.listen(listen, PhoneStateListener.LISTEN_CALL_STATE);无法拦截来电

我的问题就是无法拦截来电,无法显示来电的号码,因为我得到的是一个空的来电号码,我尝试了很多方法,都无法解决,
这是源代码

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);

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 9月12日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度