Hallo zusammen,
ich möchte gerne eine kleine App schreiben, die dafür sorgt, dass wenn mobile Daten aktiviert wird, diese gleich wieder deaktiviert wird.
Ich würde das wahrscheinlich in einem Service umsetzten mit Timer.
Jetzt habe ich einfach mal mit Android Studio eine kleine App angelegt und verschiedenes probiert was ich hier oder im Internet gefunden habe.
Z.B:
Switch mySwitch = findViewById(R.id.switchData);
mySwitch.setChecked(getMobileDataState());
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
setMobileDataState(isChecked);
}
});
public void setMobileDataState(boolean mobileDataEnabled) {
try {
TelephonyManager telephonyService = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Method setMobileDataEnabledMethod = Objects.requireNonNull(telephonyService).getClass().getDeclaredMethod("setDataEnabled", boolean.class);
setMobileDataEnabledMethod.invoke(telephonyService, mobileDataEnabled);
} catch (Exception ex) {
//Fehler
));
}
}
public boolean getMobileDataState() {
try {
TelephonyManager telephonyService = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Method getMobileDataEnabledMethod = Objects.requireNonNull(telephonyService).getClass().getDeclaredMethod("getDataEnabled");
return (boolean) (Boolean) getMobileDataEnabledMethod.invoke(telephonyService);
} catch (Exception ex) {
//Fehler
}
return false;
}
Alles anzeigen
Im Log sehe ich aber, wenn ich toggle bekomme ich folgenden Fehler:
"E/TelephonyManager: Error calling setDataEnabledForReason e:java.lang.SecurityException: Neither user 10242 nor current process has android.permission.MODIFY_PHONE_STATE."
Ich habe dann mal nachgelesen.
Scheinbar darf man ab einer bestimmten Version von Android nicht mehr die Mobilen Daten per Code anfassen. Stimmt das?
Gibt es denn noch Möglichkeiten das Vorhaben umzusetzen?
Danke und Grüße