Ich habe ein Samsung Galaxy S4 Mini, powered by CyanogenMod 13 (Android Marshmallow 6.0.1) , das ich nur als Wi-Fi verwende, da es ohne SIM-Karte ist.
Die Antenne des Geräts scheint jedoch ständig mit einem Mobilfunkmast verbunden zu sein, sodass ich befürchte, dass dies zu einem (wenn auch geringfügigen) erhöhten Batterieverbrauch führen kann. Außerdem möchte ich nicht, dass meine Position aufgrund dieses Verhaltens trianguliert wird.
Einfach *#*#4636#*#* zu wählen und die Antenne von dort aus zu deaktivieren, scheint zu genügen, aber die Änderung bleibt zwischen Neustarts nicht bestehen, und jedes Mal den gesamten Vorgang zu wiederholen, ist lästig.
Was ich mir wünsche, ist eine Möglichkeit, die oben genannte Änderung dauerhaft zu machen, ohne dass eine ganze App erforderlich ist, die ich für eine so einfache Aufgabe für übertrieben halte . Noch besser, ich bevorzuge eine Lösung, die das eingebaute Terminal verwendet , sei es ein einzelner Befehl oder eine Funktion, und ich bin offen für Lösungen, die Root-Zugriff erfordern .
Gibt es eine solche Möglichkeit, dies zu erreichen?
Verwenden Sie den Flugmodus, um das Mobilfunknetz zu deaktivieren. Dies ist einfach und erfordert keine App, die Verwendung eines Terminals oder Root-Zugriff.
Ab sofort habe ich einen Weg gefunden, um das zu erreichen, was die Frage stellt. Diese Lösung wurde auf CyanogenMod 12.1 und 13 getestet .
Wenn die Operation nicht häufig ausgeführt werden soll, reicht eine einzige Codezeile aus:
su -c "setprop persist.radio.noril 1"
. Dadurch ignoriert das Telefon die Funkschnittstellenschicht und ignoriert somit das Vorhandensein der Antenne. Ein Neustart ist erforderlich, damit die Änderung wirksam wird, und sie bleibt bei Neustarts bestehen.
Außerdem lässt das Deaktivieren von RIL auch das Symbol „ Keine SIM-Karte“ verschwinden.
Das erneute Aktivieren von RIL ist nur eine Frage der Flags. Wie aus dem folgenden Beispiel ersichtlich ist:
su -c "setprop persist.radio.noril 0"
, der Befehl ist äquivalent, außer für a 0
statt a 1
. Wie zuvor ist ein Neustart erforderlich.
Ich habe auch zwei Funktionen entwickelt, die der Datei /system/etc/mkshrc hinzugefügt werden sollen . Natürlich ist es normalerweise erforderlich, die /system- Partition als Lese-/Schreibzugriff neu zu mounten, aber das Verfahren wird in dieser Antwort nicht behandelt.
Diese Datei kümmert sich um verschiedene Umgebungsvariablen und Aliase, die vom Terminal geladen werden, sobald es gestartet wird, daher wird oft davon abgeraten, damit herumzuspielen. Wir können jedoch unsere persönlichen Funktionen und Anpassungen direkt vor der Zeile hinzufügen, die lautet:
: place customisations above this line
. Ich möchte daran erinnern, dass es :
sich um eine spezielle eingebaute Shell handelt , die daher unberührt bleiben muss.
Hier definieren wir eine benutzerdefinierte Funktion radiooff
, die als nächstes nach Belieben vom Terminal aus aufgerufen werden kann. Der Code lautet wie folgt:
# This function detaches a device from the cellular network
# Upon execution, a reboot must be performed
function radiooff {
if [ "$(whoami)" != "root" ]; then
echo "Error: must be executed as root."
return 1
fi
if [ "$(getprop persist.radio.noril)" == "1" ]; then
echo "Radio is already disabled."
return 1
fi
setprop persist.radio.noril 1
if [ "$(getprop persist.radio.noril)" == "1" ]; then
echo "Radio is now disabled. Please reboot."
return 0
else
echo "Error: unable to disable radio."
return 1
fi
}
. Ich möchte daran erinnern, dass es wichtig ist, diesen Code am Ende der Datei zu platzieren, aber über der Zeile, die am Anfang dieses Abschnitts erwähnt wurde.
Diese Funktion ist, wie die Kommentare erklären, die Umkehrung der radiooff
Funktion:
# This function connects a device back on the cellular network
# Upon execution, a reboot must be performed
function radioon {
if [ "$(whoami)" != "root" ]; then
echo "Error: must be executed as root."
return 1
fi
if [ "$(getprop persist.radio.noril)" == "0" ]; then
echo "Radio is already enabled."
return 1
fi
setprop persist.radio.noril 0
if [ "$(getprop persist.radio.noril)" == "0" ]; then
echo "Radio is now enabled. Please reboot."
return 0
else
echo "Error: unable to enable radio."
return 1
fi
}
. Nach dem Speichern der Änderungen werden die Funktionen radioon
und zur Verwendung verfügbar, nachdem die CyanogenMod Terminal- Anwendung gestartet oder neu gestartet wurde. Um sie zu verwenden, geben Sie einfach den Namen der benötigten Funktion ein und geben Sie ein.radiooff
Es mag offensichtlich sein, aber die zweite Lösung funktioniert nicht, wenn der Benutzer ein Terminal verwendet, das nicht von CyanogenMod stammt.
Zauberbuch
Zauberbuch