我有一个可以关闭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();
}
}
感谢
您必须使用此权限
<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();
}
}
}