1

我正在编写一个 Android 应用程序,当启用设备的数据包数据(不是 wifi 数据只有数据包数据)并且设备锁存到数据时,应用程序应该首次开始设置。

我已经使用操作注册了接收器,CONNECTIVITY_CHANGE并且为了获取所需的信息,我使用了以下代码片段:

NetworkInfo info = intent.getParcelableExtra(
    ConnectivityManager.EXTRA_NETWORK_INFO);
info.isConnected();

但我将“信息”设为空。我还搜索了ConnectivityManager.EXTRA_EXTRA_INFO同样为空的包裹。

请帮助我解决问题。提前致谢

4

1 回答 1

1

为您执行此操作的示例类。在你的 Activity 中有一个,记得在 Activity 暂停/恢复时启动/停止它,并isConnected()从 Activity 的任何地方调用它:

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;
        }
    }
}
于 2013-02-20T06:25:37.743 回答