检测细胞接收何时恢复


由于

超出覆盖范围,打开飞行模式或任何其他原因,接收可能会丢失。我对原因不感兴趣,但我只想知道何时恢复接收。

是否有可以注册的意图来启动广播接收器?

使用 android.net.conn.CONNECTIVITY_CHANGE 的连接更改接收器似乎不适用于此目的。

任何帮助将不胜感激。

您可以使用

PhoneStateListener。您可以使用接收器进行PHONE_STATE执行此操作。

在清单中:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<receiver android:name=".PhoneStateReceiver">
    <intent-filter>
      <action android:name="android.intent.action.PHONE_STATE" />
   </intent-filter>
</receiver>

广播接收器:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
class PhoneStateReceiver extends BroadcastReceiver {
    TelephonyManager telephonyManager;
    public void onReceive(Context context, Intent intent) {
        ServiceStateListener phoneListener = new ServiceStateListener();
        telephonyManager = (TelephonyManager) context
                .getSystemService(Context.TELEPHONY_SERVICE);
        telephonyManager.listen(phoneListener, PhoneStateListener.LISTEN_SERVICE_STATE);
    }
    public void onDestroy() {
        telephonyManager.listen(null, PhoneStateListener.LISTEN_NONE);
    }
}

PhoneStateListener:

import android.telephony.PhoneStateListener;
class ServiceStateListener extends PhoneStateListener {
    public void onServiceStateChanged (ServiceState serviceState) {
        boolean connected = (serviceState.getState() == ServiceState.STATE_IN_SERVICE);
        // Do work based on "connected"
    }
}

最新更新