당신은 당신의 AndroidManifest.xml
<receiver android:name=".LowBatteryReceiver">
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
</intent-filter>
</receiver>
에서이 권한
<uses-permission android:name="android.permission.BATTERY_STATS" />
를 사용해야합니다
그리고 당신의 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();
}
}
}
입니다
글쎄, 내가 원하는 것은 또한 3g 데이터 연결을 해제하는 것입니다. 뿐만 아니라 Wi - Fi를 .. 어떻게 할 수 있습니까? –
이전 글을 편집했습니다. 그것을 확인하실 수 있습니다 – okarakose
감사합니다 !! 오직 두 가지 질문 만 가능합니다. wifi 연결의 onReceive 안에 모바일 데이터 코드를 삽입 할 수 있습니까? 그리고 그것은'필드'를 가져올 것을 요구하지만 어느 것을 알지 못합니다 .. –