简体   繁体   English

Roottols使我无法打开文件

[英]Roottols is making me unable to open a file

I have an App that copies and modifies permissions of a file. 我有一个可以复制和修改文件权限的应用程序。 But then when I try to read said file I get permission denied. 但是,当我尝试读取该文件时,我被拒绝了权限。

java.io.FileNotFoundException: /data/data/com.lstupenengo.primeraapp/files/xx: open failed: EACCES (Permission denied) java.io.FileNotFoundException:/data/data/com.lstupenengo.primeraapp/files/xx:打开失败:EACCES(权限被拒绝)

How can I know when RootTools is finished? 我怎么知道RootTools何时完成?

My code: 我的代码:

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 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)

Added this code and now I get an exeption on the Chmod but it works. 添加了此代码,现在我可以在Chmod上使用exeption,但它可以工作。

 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();
        }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM