プログラムでモバイルデータをオンにするコードを見つけましたが、何らかの理由で、アプリケーションを起動するとトグルボタンがオンになりません (以前にモバイルデータをオンにしました-ボタンが正しく機能しているかどうかを確認するためだけに)。アプリケーションを起動する前にモバイルデータがオンになっていない場合、ボタンは正常に機能していることに言及したいと思います。
このコードはトグル ボタン用です。
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);
}
});