如何关闭android中的数据连接?

时间:2013-08-04 23:35:48

标签: android connection broadcastreceiver 3g 3g-network

我有一个关闭wifi的BroadcastReceiver ..同样我想要关闭数据连接。我怎么能这样做?这是代码

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

由于

1 个答案:

答案 0 :(得分:1)

您必须使用此权限

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

在AndroidManifest.xml中

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

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