为移动数据状态更改侦听器设置广播接收器

时间:2013-12-03 06:43:03

标签: android broadcastreceiver

我想为启用/禁用的任何类型的移动数据设置接收器,例如3g等。

我在接收时使用此代码...

但是在某些设备中它无法正常工作且很多情况下接收器会在一段时间后触发,有时我不会触发Broadcastreceiver的onReceive()?

请帮我解决错误的代码或需要其他一些技巧来解决?

ConnectivityManager conMan = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo netInfo = conMan.getActiveNetworkInfo();

if (netInfo != null && netInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
    Toast.makeText(context, "Mobile data enable", Toast.LENGTH_LONG).show();
}

和清单中的这个coode

  <receiver android:name=".BroadcastReceiverforData" >
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
            <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
        </intent-filter>
    </receiver>

提前致谢...

1 个答案:

答案 0 :(得分:0)

<这可能对你有帮助。在广播接收器中添加它

if(intent.getAction()=="android.net.wifi.STATE_CHANGE" || intent.getAction()=="android.net.conn.CONNECTIVITY_CHANGE"){
NetworkInfo netInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
NetworkInfo netInfo1 = intent.getParcelableExtra(ConnectivityManager.CONNECTIVITY_ACTION);
        if( netInfo.isConnected() ){
        ///do
        }
        if( netInfo1.isConnected() ){
        ///do
        }