由于
超出覆盖范围,打开飞行模式或任何其他原因,接收可能会丢失。我对原因不感兴趣,但我只想知道何时恢复接收。
是否有可以注册的意图来启动广播接收器?
使用 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"
}
}