Set Broadcast receiver for mobile data state change listener

雨燕双飞 提交于 2020-01-05 13:09:34

问题


I want to set receiver for any type of mobile data enabled/disabled such as 3g etc.

I am using this code for on receive...

but in some device it can't work properly and many case receiver trigger after some time and some time i will not trigger onReceive() of Broadcastreceiver ?

Please help me either I going through wrong code or it need some other trick to resolve?

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();
}

and this coode in manifest

  <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>

Thanks in advance...


回答1:


Probably this may help you. Add this in broad cast receiver

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
        }


来源:https://stackoverflow.com/questions/20344547/set-broadcast-receiver-for-mobile-data-state-change-listener

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!