使用Python浏览Android设备的目录

时间:2014-10-20 09:45:48

标签: android python adb

我希望我的用户能够查看&当他们点击“浏览”按钮时导航Android设备的目录,这样他们就可以选择存储照片的文件夹。

截至目前,我可以进入“adb shell”,但是当通过adb shell连接到设备时,我无法再输入任何命令进行交互。我想通过adb shell和cd连接到设备,或者在连接到设备后运行其他命令。我当前的代码非常糟糕,因为我不明白“stdout = subprocess.PIPE”是什么意思,我只是关注一些在线教程。

这是我目前的代码:

from subprocess import check_output
import subprocess

out = check_output("adb shell ls")

print out

destination = raw_input("Choose a folder: ")

p = subprocess.Popen("adb shell",stdout=subprocess.PIPE)
out, err = p.communicate()

g = subprocess.call(['cd', destination], stdout=subprocess.PIPE)
out, err = g.communicate()

print out

我感谢任何帮助和指导。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我建议您使用Android功能来迭代目录和文件。例如,您创建一个新文件,当然如果您使用Java创建它(并且可能更容易):

File currentDir = new File("/"); // "/" stands for root directory
File[] files = currentDir.listFiles(); // lists all files in the current directory, store them in the *files* array 
//you can supply as an argument a String[] array, with the file extensions if needed 
//(to show only .jpeg, .png, or only documents like .docx, .pdf)
//you can use Collections and Comparator classes to sort them
if(files != null && files.length > 0) { //check if it holds any files
        for(File f : files) {
            if(f.isHidden()) { 
                // don't add the hidden file to the list, or at your choice
                continue;
            } else {
            // add the file to the list
            fileList.add(f);
            }
        }
        Collections.sort(fileList, new FileComparator()); //
}
//you can also check if a specific *file* is file or directory with
file.isFile();
file.isDirectory();

您可以使用有关文件的所有信息在ListView或GridView中显示它们,点击特定项目,您可以更新 currentDir 并刷新内容或打开文件等

以下是文件选择器http://www.dreamincode.net/forums/topic/190013-creating-simple-file-chooser/

的示例