Android 切换按钮未打开

Android 切换按钮未打开,android,Android,我找到了一个以编程方式打开移动数据的代码,但由于某种原因,启动应用程序时我的切换按钮并没有打开(我以前打开过移动数据,只是为了检查按钮是否正常工作)。我想提到的是,若在启动应用程序之前并没有打开移动数据,那个么该按钮工作正常 此代码用于切换按钮: gprs.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChang

我找到了一个以编程方式打开移动数据的代码,但由于某种原因,启动应用程序时我的切换按钮并没有打开(我以前打开过移动数据,只是为了检查按钮是否正常工作)。我想提到的是,若在启动应用程序之前并没有打开移动数据,那个么该按钮工作正常

此代码用于切换按钮:

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

            }
        });

检查切换按钮,具体取决于Internet连接的状态:

public boolean connectivityCheck(){
    CheckConnectivity check = new CheckConnectivity();
    check = new CheckConnectivity();
    return check.checkNow(this.getApplicationContext());
}
以下功能可重新用于检查是否存在网络连接:

public boolean connectivityCheck(){
    CheckConnectivity check = new CheckConnectivity();
    check = new CheckConnectivity();
    return check.checkNow(this.getApplicationContext());
}
这是检查连接性的类。另外:

onCreate()
方法中,输入:

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

干杯:-)

你能不能在活动的
onCreate()
方法中添加
toggleButton.setChecked()
,你想首先检查它?如果我使用gprs.setChecked()它说它需要设置检查(布尔值)…如果我这样做,我有两个选择;调用isInternetPresent或false。我尝试了这两种方法,但都没有改变…哦,所以如果有internet连接,你想检查它,如果没有,就检查它-然后是的,你最好在
onCreate()
中检查它以确定。这就是问题所在,我不知道如何做…好的,我会粘贴一些伪代码作为答案。你确定它不是ConnectionManager吗?哦,是的,我真的很抱歉,我忘了在单独的类中使用它:-D但是我更新了答案-不要忘记包括适当的权限,如
网络状态
等。欢迎+1回答问题:)