Wie kann ich Root-Berechtigungen über das Android SDK erhalten?

Ich lerne Android-Programmierung, und ich möchte eine Anwendung machen, die als root ausgeführt werden muss. Die logische Sache wäre, eine Root-Berechtigung im Android-Manifest hinzuzufügen.

Ich habe diesen Link in der Dokumentation gesehen und insbesondere die FACTORY_TEST Berechtigung notiert:

public static final String FACTORY_TEST

Seit: API Level 1

Führen Sie als Hersteller eine Testanwendung aus, die als Root-Benutzer ausgeführt wird. Nur verfügbar, wenn das Gerät im Hersteller-Testmodus läuft. Konstanter Wert: “android.permission.FACTORY_TEST”

Ist das der beste Weg?

Wenn es mit dem SDK nicht möglich ist, wie kann ich eine “root” -Anwendung arbeiten lassen?

Was Sie tun müssen, ist etwas wie:

 Process root = Runtime.getRuntime().exec("su"); 

Das führt dazu, dass SuperUser angezeigt wird, sodass Sie es entweder vom Root-Zugriff aus zulassen oder blockieren können. Dieser Ansatz funktioniert möglicherweise nicht, wenn der Benutzer nicht verwurzelt ist. Hier ist eine Möglichkeit, wie Sie es testen können.

Zuerst müssen wir die Grundlagen richtig machen. Android Linux-coreel darunter laufen. Nun, wenn Sie Ihren process mit Super User Privilegien ausführen müssen (führen Sie es als root), ist die einzige Möglichkeit, Ihren process über die command line auszuführen command line da es die einzige Möglichkeit ist, direkt mit dem coreel zu interagieren. Sie müssen auch su bevor Sie einen Befehl ausführen. Auch wie Chris in seinem Kommentar zur 1. Antwort erwähnt hat

 Process process = Runtime.getRuntime().exec("su"); 

wird fast nichts erreichen. Es wird nur nach Super-Nutzungsrechten gefragt, die den Dialog verwenden. Was Sie tun können, ist, anstatt nur su auszuführen, können Sie Ihren process mit su wie folgt ausführen

 Process process = Runtime.getRuntime().exec(new String[] { "su", "-c", yourCommand}); 

Die Option -c

Zu den am häufigsten verwendeten Optionen von su gehört -c, die su to execute the command that directly follows it on the same line . Ein solcher Befehl wird als neuer Benutzer ausgeführt, und das Terminalfenster oder die Konsole, von der / die su ausgeführt wurde, kehrt sofort zum Konto des vorherigen Benutzers zurück, nachdem der Befehl ausgeführt wurde oder nachdem ein Programm, das gestartet wurde, geschlossen wurde Einzelheiten )

Alternative Option

Alternative zur oben genannten Methode, die funktionieren könnte, ist die Verwendung der Befehlszeile, um Ihre App in das Verzeichnis /system/app/ zu kopieren. Dann wird Ihre Anwendung automatisch mit Root-Rechten ausgeführt (wie bei System-Apps) ( Mehr auf Android-Partitionen )

Das SDK bietet keine Möglichkeit, eine App als root auszuführen.