2013-08-04 6 views
0

나는 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
당신은 당신의 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(); 
      } 
     } 
    } 
입니다
+0

글쎄, 내가 원하는 것은 또한 3g 데이터 연결을 해제하는 것입니다. 뿐만 아니라 Wi - Fi를 .. 어떻게 할 수 있습니까? –

+1

이전 글을 편집했습니다. 그것을 확인하실 수 있습니다 – okarakose

+0

감사합니다 !! 오직 두 가지 질문 만 가능합니다. wifi 연결의 onReceive 안에 모바일 데이터 코드를 삽입 할 수 있습니까? 그리고 그것은'필드'를 가져올 것을 요구하지만 어느 것을 알지 못합니다 .. –