屏幕关闭时如何获取Android.Telephony.PhoneState?

时间:2018-06-27 07:40:47

标签: android xamarin.android

我有一个非常类似于this one的问题,但是六年前有人问过,我以为是有些事情发生了。

基本上,我不想在信号丢失时不通知用户。我实现了从PhoneStateListenerOnServiceStateChanged方法继承的类。另外,我有一项在后台运行并监听更改的服务。只要屏幕处于打开状态,一切都可以正常工作。

但是显然,当屏幕关闭时,Android不会调用OnServiceStateChanged。有什么方法可以直接从服务中获得Android.Telephony.PhoneState或其他解决方法?

到目前为止,我的代码如下:

PhoneStateListener

Service

2 个答案:

答案 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 */
    }
}