Не удается просмотреть все файлы в браузере файлов - PullRequest
2 голосов
/ 26 января 2012

У меня странная проблема в приложении для просмотра файлов, где я не могу просмотреть все файлы / папки, которые там есть.Кажется, будто они отфильтрованы.Root Explorer, кажется, находит файлы в порядке, но мое приложение не может.Есть идеи?И да, мой телефон рутирован.

Ответы [ 2 ]

1 голос
/ 27 января 2012

Причина, по которой класс File не работал, заключается в том, что у вас нет разрешения на чтение этих каталогов. Единственный способ получить доступ - это читать / записывать эти каталоги, используя корневые разрешения - и чтобы использовать корневые разрешения, вы должны запускать команды на основе linux.

Я не знаю, как именно выполнить весь процесс, но вы должны использовать RootTools.

Обычно для запуска команды на основе linux вы выполняете Runtime.getRuntime.exec("command");, но с RootTools весь процесс значительно упрощается, а также легче получить результаты команды.

Если вы хотите, я могу попытаться объяснить, как это сделать вручную (выполните Runtime.getRuntime.exec("command"); или если вы просматриваете Wiki для RootTools и интегрируете его с вашим приложением, вы, вероятно, сможете это выяснить.

Если у вас есть дополнительные вопросы, я буду рад помочь моим лучшим возможностям.

EDIT: Я вижу ваш ответ, поэтому кажется, что вы хорошо понимаете, как выполнять команды. Однако RootTools облегчит вам задачу.

1 голос
/ 27 января 2012

Хорошо, я больше изучал команды оболочки, и этот метод работает, но является ли это наиболее эффективным способом сделать это?

public void ls(String directory) {  
                Process process = null;

                try {
                    process = Runtime.getRuntime().exec("ls " + directory);
                } catch (IOException e) {
                    e.printStackTrace();
                }    

                int read;
                BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
                char[] buffer = new char[4096];
                StringBuilder output = new StringBuilder();

                try {
                    while ((read = reader.read(buffer)) > 0) {
                        output.append(buffer, 0, read);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }

                try {
                    reader.close();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }

                try {
                    process.waitFor();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }       

                Log.d("Files", output.toString());
        }
...