2014-12-19 3 views
0

У меня есть приложение, которое копирует и изменяет права доступа к файлу. Но затем, когда я пытаюсь прочитать указанный файл, я получаю разрешение.Roottols не позволяет мне открыть файл

java.io.FileNotFoundException: /data/data/com.lstupenengo.primeraapp/files/xx: Не удалось открыть: EACCES (нет прав)

Как я могу знать, когда RootTools закончен?

Мой код:

RootTools.copyFile("/data/data/com.xxx/" + file, getFilesDir() +"/"+ file, true, false); 
     CommandCapture cmd = new CommandCapture(0,"chmod 777 "+getFilesDir()+"/"+file); 
     try { 
      RootTools.getShell(true).add(cmd); 
     } catch (TimeoutException | RootDeniedException | IOException e) { 
      e.printStackTrace(); 
      Log.e("Root "+file, "Fallo"); 
     } 

     File fts = new File(getFilesDir()+"/"+file); 
     FileInputStream fis = new FileInputStream(fts); //Here I get my error. 

Logcat

12-18 16:23:41.874 30092-30806/com.lstupenengo.primeraapp W/System.err﹕ java.io.FileNotFoundException: /data/data/com.lstupenengo.primeraapp/files/xx: open failed: EACCES (Permission denied) 
12-18 16:23:41.874 30092-30806/com.lstupenengo.primeraapp W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:418) 
12-18 16:23:41.874 30092-30806/com.lstupenengo.primeraapp W/System.err﹕ at java.io.FileInputStream.<init>(FileInputStream.java:78) 
12-18 16:23:41.874 30092-30806/com.lstupenengo.primeraapp W/System.err﹕ at com.lstupenengo.primeraapp.myFTP.upload(myFTP.java:80) 
12-18 16:23:41.874 30092-30806/com.lstupenengo.primeraapp W/System.err﹕ at com.lstupenengo.primeraapp.FirstRunService.upload(FirstRunService.java:75) 
12-18 16:23:41.874 30092-30806/com.lstupenengo.primeraapp W/System.err﹕ at com.lstupenengo.primeraapp.FirstRunService.onHandleIntent(FirstRunService.java:47) 

ответ

0

Добавлен этот код, и теперь я получаю Exeption на Chmod, но это работает.

CommandCapture cmd = new CommandCapture(0,"chmod 777 "+getApplicationInfo().dataDir+"/databases/"+file); 
     try { 
      RootTools.getShell(true).add(cmd); 
      while (!cmd.isFinished()) { 

       synchronized (cmd) { 
        try { 
         if (!cmd.isFinished()) { 
          cmd.wait(100); 
         } 
        } catch (InterruptedException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     } catch (TimeoutException | RootDeniedException | IOException e) { 
      Log.e(file, "Chmod fail"); 
      e.printStackTrace(); 
     } 
Смежные вопросы