【发布时间】:2017-02-09 09:20:29
【问题描述】:
我正在尝试在服务中创建电话状态更改侦听器。我的服务扩展了基本服务,所以没有 IntentService 或类似的东西。
接收者是基本的BroadcastReceiver,我这样注册:
IntentFilter filter = new IntentFilter();
filter.addAction(TelephoneManager.ACTION_PHONE_STATE_CHANGED);
registerReceiver(receiver, filter);
但是我的接收器onReceive 从未被调用过。我错过了什么?例如,如果我将过滤器操作更改为Intent.ACTION_SCREEN_OFF,我每次关闭屏幕时都会收到onReceive,所以我认为我的IntentFilter 可能存在问题。我想用它来监听来电、信号强度、小区 ID 变化和所有这些东西。我已经在清单中注册了READ_PHONE_STATE 权限,所以这应该不是问题。我的设备是装有 Android 6.0.1 的 Nexus 5X
有什么想法吗?
【问题讨论】:
-
您的 Gradle 文件中有哪些目标 SDK? 23岁或以上?
-
目标为 25,最小为 23
-
确保您已在清单文件中添加服务和广播接收器
-
由于我在代码中注册了接收器,因此无需将其添加到清单中。正如我所说,我的接收器是完全正确的,因为当我将意图更改为 screen_off 时,我会收到事件。我没有通过 PHONE_STATE 操作获得 onReceive
标签: android broadcastreceiver phone-state-listener