Android: Schreiben in /sys/ - Verzeichnis
Entwickle ich eine Anwendung, die nicht freigesetzt werden sollen, als standard-app. Es werden die Ausführung auf einem gerooteten Gerät.
Ich die Möglichkeit zum schreiben einer Datei in das /sys/- Verzeichnis. Die fragliche Datei ist im Besitz von root und hat -rw-rw-rw - Berechtigungen.
Ich bin mir bewusst, dass es Einschränkungen auf der VM mein code ausgeführt wird, innerhalb, die es verbieten, zu schreiben zu diesem Bereich der Datei-system, aber habe ich beobachtet, dass eine andere Anwendung offenbar tun.
Ist das möglich? Wie könnte es erreicht werden? Es spielt keine Rolle, ob das Telefon gerootet sein muss, um (die dev ich benutze ist).
Ist, habe ich mich in Sie einfach mit einem FileWriter zum schreiben in die Datei, verursacht den folgenden Fehler auf .flush()
:
java.io.IOException: Invalid argument
at org.apache.harmony.luni.platform.OSFileSystem.writeImpl(Native Method)
Ich habe auch versucht das ausführen eines shell-Kommandos von Java, sowohl mit als auch ohne "su". Die Rückgabe "Anfrage abgewiesen" und "Permission Denied" angezeigt.
Process process = Runtime.getRuntime().exec("echo 'hello' > /sys/file");
Schließlich habe ich versucht, mit dem NDK und JNI in der Rechtssache C einige, wie magisch es geschafft zu dieser Datei schreiben. Wenn Sie versuchen, um fflush
zu dieser Datei, die ich erhalten ein EOF (d.h. ein Fehler aufgetreten ist).
Alle Vorschläge sehr willkommen!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Methode Runtime.getRuntime().exec(String) einfach behandelt die Eingabe als string ein Dateiname einer ausführbaren Datei. Es kann nicht sein, dass Sie Ihr echo-Befehl.
Sollten Sie die Laufzeit.getRuntime().exec(String[]) statt, wie:
String[] cmd = { "/system/bin/sh", "-c", "echo xxx > /sys/somefile", };
- Laufzeit.getRuntime().exec(cmd);
Alternativ dazu, etwas zu schreiben, um eine sys-Datei, die Sie verwenden sollten java.io.PrintWriter Klasse.
Bitte http://www.netmite.com/android/mydroid/frameworks/base/core/java/android/os/Debug.java und Suche nach 'startNativeTracing()' ein Beispiel.
Von der Ursache, alle der oben genannten können nur funktionieren, wenn die sys-Datei ist beschreibbar für Ihre Anwendung.
ich denke, du gehst zu haben, um zu teilen, der eigentliche code und sagen Sie uns, was Sie wirklich versuchen zu tun. "Ungültiges argument" entspricht write(2) nicht mit EINVAL, was passiert, wenn Sie versuchen zu schreiben, um etwas ungeeignet. keine Berechtigungen Ding; ein Typ Sache. diese Datei ist keine normale Datei ist es?
Müssen Sie ändern Sie Ihre manifest-also Ihr Programm fragt, für root-user-Zugang.
http://developer.android.com/reference/android/Manifest.permission.html
public static final String FACTORY_TEST
Seit: API-Ebene 1
Laufen als Hersteller von test-Anwendung läuft als root-Benutzer. Nur verfügbar, wenn das Gerät läuft im herstellertest-Modus.
Konstanter Wert: "android.die Genehmigung.FACTORY_TEST"