2014-10-20 2 views
0

Я хочу, чтобы мой пользователь имел возможность просматривать &, перейдя по каталогам устройства Android, когда они нажимают кнопку «Обзор», поэтому они смогут выбрать папку, в которой находятся фотографии. сохраняются.Просмотр каталога Android-устройства с использованием Python

На данный момент я могу войти в «оболочку adb», но я не могу вводить никаких дополнительных команд для взаимодействия при подключении к устройству через оболочку adb. Я хотел бы подключиться к устройству через оболочку adb и 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 

Я признателен за любую помощь и руководства дали. Заранее спасибо.

ответ

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/

+0

Привет, спасибо за быстрый ответ. Я пишу свой код в Python, и я буду признателен, если вы сможете вести меня по синтаксису Python (я постараюсь написать его в Python сам тем временем). Вы знаете, можно ли использовать adb для подключения к оболочке adb и вводить дополнительные команды в режиме «adb shell»? Огромное спасибо. – jkaj

+0

Как вы пишете приложение для python для Android? Вы используете фреймворк, библиотеку? Если да, у него должны быть некоторые функции. Я нашел этот один kyvi.org, для некоторых дополнительных функций вы можете подключить к нему несколько модулей http://kivy.org/docs/guide/android.html#plyer и, похоже, есть пример для создания файла-выбора http: //kivy.org/docs/api-kivy.uix.filechooser.html (с использованием функций фреймворка). – Cornel