1

私は、デバイスのパケットデータが有効になっているときに (wifi データのみのパケットデータではなく)、デバイスがデータにラッチされたときに、アプリケーションが初めてセットアップを開始する必要がある Android アプリケーションを作成しています。

受信者をアクションに登録しCONNECTIVITY_CHANGE、必要な情報を取得するために次のコード スニペットを使用しました。

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

しかし、「情報」をnullとして取得しています。また、null になった parcelable も検索しましたConnectivityManager.EXTRA_EXTRA_INFO

問題を解決するために私を助けてください。前もって感謝します

4

1 に答える 1

1

これを行うためのクラスの例。アクティビティに1つ用意し、アクティビティが一時停止/再開するときに開始/停止し、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;
        }
    }
}
于 2013-02-20T06:25:37.743 に答える