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

            }
        });
4

1 に答える 1