在启用设备的数据包数据时接收广播意图

时间:2013-02-20 06:14:07

标签: android android-intent

我正在编写一个Android应用程序,当应用程序的数据包数据启用时(第一次启用设备的数据包数据)并且设备锁存到数据时,应用程序应首次启动。

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

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

但我将“信息”视为空。我还搜索了也可以为null的parcelable ConnectivityManager.EXTRA_EXTRA_INFO

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

1 个答案:

答案 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;
        }
    }
}