Специальные каталоги Android - PullRequest
3 голосов
/ 28 июля 2010

Я вижу, что начиная с уровня API 8, вы можете запросить дескриптор для специальных каталогов с помощью Environment.getExternalStoragePublicDirectory(). Это принимает тип, такой как DIRECTORY_MUSIC, DIRECTORY_PICTURES и т. Д.

Я ищу эквивалентный каталог для других типов мультимедиа, таких как документы (документы Word, PDF и т. Д.). В моем HTC Desire есть папка /sdcard/My Documents/, которая выглядит именно так, как я хочу, но у нее нет спецификатора DIRECTORY_ для использования с вышеуказанным способом. Это стандартный каталог Android, на который я могу положиться?

Если я не могу использовать getExternalStoragePublicDirectory(), я должен вместо этого использовать getExternalStorageDirectory(), который просто указывает мне на корень SD-карты. Я могу явно проверить наличие My Documents в корне и использовать его, если он там есть.

Вот что у меня есть:

 // default document save location
 File defaultSaveDir = Environment.getExternalStorageDirectory();
 File myDocs         = new File(defaultSaveDir, "My Documents");
 if (myDocs.exists() && myDocs.isDirectory())
     defaultSaveDir = myDocs;

Есть ли лучший способ?

1 Ответ

2 голосов
/ 28 июля 2010

«Мои документы» нет на моем Nexus. Вместо этого у меня есть каталог «Документы». Так что это не поможет портативным способом.

С SDK 8 вы должны использовать getExternalFilesDir - но будьте осторожны, есть ловушка. Я написал небольшую статью в моем блоге .

В конце концов я использовал:

final java.io.File Storage = android.os.Environment.getExternalStorageDirectory ();
final java.io.File Dir = new java.io.File (Storage, "Android/FX-603P");
Dir.mkdirs ();

Я использовал базовый каталог «Android», поскольку он кажется новым предпочтительным способом со времен SDK8.

...