我正在编写一个Android应用程序,当应用程序的数据包数据启用时(第一次启用设备的数据包数据)并且设备锁存到数据时,应用程序应首次启动。
我已使用操作CONNECTIVITY_CHANGE
注册了接收者,并且为了获取所需信息,我使用了以下代码段:
NetworkInfo info = intent.getParcelableExtra(
ConnectivityManager.EXTRA_NETWORK_INFO);
info.isConnected();
但我将“信息”视为空。我还搜索了也可以为null的parcelable ConnectivityManager.EXTRA_EXTRA_INFO
。
请帮助我解决问题。提前致谢
答案 0 :(得分:1)
为您执行此操作的示例类。在Activity中有一个,记得在Activity暂停/恢复时启动/停止它,并从Activity中的任何位置调用它isConnected()
:
public class ConnectivityListener extends BroadcastReceiver {
private final Context mContext;
private final ConnectivityManager mConnectivityManager;
private volatile boolean mConnected;
public boolean isConnected() {
return mConnected;
}
public ConnectivityListener(Context context) {
mContext = context;
mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
}
public void startListening(){
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
mContext.registerReceiver(this,filter);
}
public void stopListening(){
mContext.unregisterReceiver(this);
}
@Override
public final void onReceive(Context context, Intent intent) {
NetworkInfo n = mConnectivityManager.getActiveNetworkInfo();
if(n != null){
mConnected = n.getType() == ConnectivityManager.TYPE_MOBILE && n.isConnectedOrConnecting();
}else {
mConnected = false;
}
}
}