我有一个非常类似于this one的问题,但是六年前有人问过,我以为是有些事情发生了。
基本上,我不想在信号丢失时不通知用户。我实现了从PhoneStateListener
和OnServiceStateChanged
方法继承的类。另外,我有一项在后台运行并监听更改的服务。只要屏幕处于打开状态,一切都可以正常工作。
但是显然,当屏幕关闭时,Android不会调用OnServiceStateChanged
。有什么方法可以直接从服务中获得Android.Telephony.PhoneState
或其他解决方法?
到目前为止,我的代码如下:
答案 0 :(得分:0)
尝试创建BroadcastReciever类
https://developer.android.com/guide/components/broadcasts
并更改AndroidManifest.xml
文件,我认为您需要以下许可权
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
创建Broadcast Receiver类后,在AndroidManifest.xml
中插入以下代码段
<receiver android:name="//BroadcastReceiver Class Name" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE">
</action>
</intent-filter>
</receiver>
答案 1 :(得分:0)
AndroidManifest.xml
文件,我认为您需要以下权限
<uses-permission
android:name="android.permission.MODIFY_PHONE_STATE"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.CALL_PHONE" />
在AndroidManifest.xml
中创建广播接收器类
<receiver android:name=".services.Blocker">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
Blocker.java
public class Blocker extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
/* write your code here */
}
}