Search code examples
androidconnectionbroadcastreceiver3g3g-network

How can i turn off data connection in android?


I've got a BroadcastReceiver that turns off the wifi..in the same i want turn off also the data connection..How can i do it? This is the code

public static class LowBatteryReceiver extends BroadcastReceiver{
        public void onReceive(Context context, Intent intent){
            wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
            wifiManager.setWifiEnabled(false);
            wifi = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
            Toast.makeText(context, "Turning off wifi..", Toast.LENGTH_LONG).show();
        }
    }

Thanks


Solution

  • You must use this permission

    <uses-permission android:name="android.permission.BATTERY_STATS" />
    

    In your AndroidManifest.xml

    <receiver android:name=".LowBatteryReceiver">
        <intent-filter>
             <action android:name="android.intent.action.BATTERY_LOW" />
        </intent-filter>
    </receiver>
    

    And your LowBatteryReceiver

    /** FOR CLOSE WIFI **/
    
    public static class LowBatteryReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent){
            String intentAction = intent.getAction();
            if(intentAction.equals(Intent.ACTION_BATTERY_LOW))
                wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
                wifiManager.setWifiEnabled(false);
                Toast.makeText(context, "Turning off wifi..", Toast.LENGTH_LONG).show();
            }
        }
    }
    
    /** FOR CLOSE MOBILE DATA **/
    
    public void onReceive(Context context, Intent intent){
            String intentAction = intent.getAction();
            if(intentAction.equals(Intent.ACTION_BATTERY_LOW))
                try {
                ConnectivityManager conman = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                Class<?> conmanClass = Class.forName(conman.getClass().getName());
                Field iConnectivityManagerField = conmanClass.getDeclaredField("mService");
                iConnectivityManagerField.setAccessible(true);
                Object iConnectivityManager = iConnectivityManagerField.get(conman);
                Class<?> iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName());
                Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE);
                setMobileDataEnabledMethod.setAccessible(true);
                setMobileDataEnabledMethod.invoke(iConnectivityManager, false);
                } catch (Exception e) {
                e.printStackTrace();
                }
            }
        }