2013-08-08 3 views
2

모바일 데이터를 프로그래밍 방식으로 사용하도록 설정 한 코드가 있지만 애플리케이션을 시작할 때 토글 버튼이 켜지지 않습니다 (이전에 모바일 데이터가 켜져 있음 - 버튼이 제대로 작동하는지 확인하기 위해 만 사용) . 응용 프로그램을 시작하기 전에 모바일 데이터가 켜져 있지 않으면 버튼이 제대로 작동한다고 말씀 드리고 싶습니다.토글 버튼이 켜져 있지 않습니다.

gprs.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     try { 
      turnData(isChecked); //Klasa za ukljucivanje gprsa 
     } catch (Exception e) { 
     // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
}); 

그리고 클래스 :

이 코드는 토글 버튼입니다

void turnData(boolean ON) throws Exception { 

Log.i("version:", "Found Gingerbread+"); 
     final ConnectivityManager conman = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); 

     final Class conmanClass = Class.forName(conman.getClass().getName()); 
     final Field iConnectivityManagerField = conmanClass.getDeclaredField("mService"); 
     iConnectivityManagerField.setAccessible(true); 
     final Object iConnectivityManager = iConnectivityManagerField.get(conman); 
     final Class iConnectivityManagerClass = Class.forName(iConnectivityManager.getClass().getName()); 
     final Method setMobileDataEnabledMethod = iConnectivityManagerClass.getDeclaredMethod("setMobileDataEnabled", Boolean.TYPE); 
     setMobileDataEnabledMethod.setAccessible(true); 
     setMobileDataEnabledMethod.invoke(iConnectivityManager, ON); 
} 

편집 : WiFi를 매우 간단하지만, 모바일 데이터에 대해 나는 토글

에없는 이유를 잘 모릅니다
wifiManager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE); 
     wifi.setChecked(wifiManager.isWifiEnabled()); 

     wifi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 


      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       wifiManager.setWifiEnabled(isChecked); 

      } 
     }); 
+0

처음에 Activity의 onCreate() 메소드에서'toggleButton.setChecked()'를 추가 할 수 없습니까? – g00dy

+0

만약 내가 gprs.setChecked()를 만들면 setChecked (boolean)가 필요하다는 것을 알 수 있습니다. isInternetPresent 또는 false를 호출합니다. 나는 둘 다 시도했지만 아무것도 바뀌지 않았다 ... –

+0

오, 인터넷 연결이되어 있는지 확인하고 싶지 않다면 체크하지 말고 - 그렇다. 확실하게'onCreate()'를 확인하는 것이 좋다. – g00dy

답변

1

토글 버튼을 인터넷 연결 상태에 따라 선택하십시오.

onCreate() 방법 넣어서

package com.yourPackageName; 

import android.content.Context; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 

public class CheckConnectivity { 

    ConnectivityManager connectivityManager; 
    NetworkInfo wifiInfo, mobileinfo; 

    public Boolean checkNow(Context con){ 

     try{ 

      connectivityManager = (ConnectivityManager) con.getSystemService(Context.CONNECTIVITY_SERVICE); 
      wifiInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
      mobileinfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

      if(wifiInfo.isConnected() || mobileinfo.isConnected()){ 
       return true; 
      } 
     } 
     catch(Exception e){ 
      System.out.println("CheckConnectivity Exception: " + e.getMessage()); 
     } 
     return false; 
    } 
} 

:

public boolean connectivityCheck(){ 
    CheckConnectivity check = new CheckConnectivity(); 
    check = new CheckConnectivity(); 
    return check.checkNow(this.getApplicationContext()); 
} 

는 이것은 또한 CheckConnectivity.class이다 516,

아래 함수 anetwork 연결이 있는지 확인하기 위해 재사용 될 수있다 :

if(connectivityCheck()){ 
    //There's an internet connection 
    toggleButton.setChecked(true); 
} 
else{ 
    toggleButton.setChecked(false); 
} 

건배 :-)

+0

CheckConnectivity 유형으로 해결할 수 없습니다 ... –

+0

만약 내가 귀하의 요구 사항을 정확하게 이해 -해야합니다. – g00dy

+0

그것이 ConnectivityManager가 아니 었습니까? –

관련 문제