1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. kunkka, 04.04.2011 #1
    kunkka

    kunkka Threadstarter Neuer Benutzer

    Nabend,

    wenn ich Dateien in meinem App-Verzeichnis /data/data/com.meineapp/... hinterlege, sind diese - soweit ich weiß - vor dem Zugriff anderer Anwendungen geschützt.

    Bei dem Versuch auf die Dateien einer anderen App zuzugreifen, erhielt ich eine FileNotFoundException (Permission denied). In meiner Test-App habe ich dann su-Rechte eingefordert und komme immer noch zu dem gleichen Ergebnis.

    Erstelle ich jedoch ein Backup mit Titanium Backup, so erfolgt ja ein erfolgreicher Zugriff auf diese Dateien - wie ist das möglich?

    Gruß,
    Tim S. (kunkka)
     
  2. MichaelS, 05.04.2011 #2
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Mit Root Rechten kannst du auf alle Daten zugreifen. Im Notfall einfach die Zugriffsrechte anpassen :) Möchte jedoch dazu kein Beispiel machen ;)
     
  3. ramdroid, 05.04.2011 #3
    ramdroid

    ramdroid Android-Experte

    Root Rechte anfordern heisst eine "su" shell aufmachen. Dann hast du aber nur in dieser shell root Rechte. Deine App selbst ist noch in der Sandbox mit den Permissions die sie immer hat, nicht mehr. Du musst also innerhalb der su shell entsprechende Kommandos ausführen (cd, ls, cat, busybox, etc.) oder du baust dir mit gnu c selbst eine Linux binary die du über die su shell aufrufst die irgendwas macht....
     
    kunkka bedankt sich.
  4. kunkka, 05.04.2011 #4
    kunkka

    kunkka Threadstarter Neuer Benutzer

    @ramdroid: Ah, das erklärt einiges. Ich habe die root-Abfrage mit:
    Code:
    Process ps = Runtime.getRuntime().exec("su");
    ausgeführt.

    Wie kann ich denn Befehle in der Shell in meiner Anwendung ausführen?
    Können so wie "su" auch andere Befehle wie oben im Code-Fenster ausgeführt werden?
     
  5. ramdroid, 05.04.2011 #5
    ramdroid

    ramdroid Android-Experte

    Code:
    Process p = Runtime.getRuntime().exec("su");
    DataOutputStream os = new DataOutputStream(p.getOutputStream());
    os.writeBytes(cmd + "\n");
    os.writeBytes("exit\n");
    os.flush();
    int exitCode = p.waitFor();
    
    cmd is dann ein String mit deinem Kommando. Du kannst writeBytes an der Stelle dann natürlich auch öfters aufrufen.....
     
    kunkka bedankt sich.
  6. kunkka, 05.04.2011 #6
    kunkka

    kunkka Threadstarter Neuer Benutzer

    Danke für die Hilfe. Dann kann's jetzt losgehen ;)
     

Diese Seite empfehlen