2015-09-21 1 views
0

я вижу файл изображения в DDMS проводнике файлов в/мнт/оболочки/эмулировать/0/DCIM/myPicsFolder /, если я пишуизображение путь к файлу в DCIM возвращается как ложное

final String uploadFilePath = "/mnt/shell/emulated/0/DCIM/myPicsFolder/"; 
final String uploadFileName = "mypic.jpg"; 
String sourceFileUri = uploadFilePath + uploadFileName; 
File sourceFile = new File(sourceFileUri); 
if (sourceFile.isFile()) {/*Upload Image*/} 

но если statemente возвращает false: - /, что случилось? Я тестирую код в Samsung Core 2 с Android 4.4. Я проверил и перепроверял, правильно ли написан путь, и все в порядке.

+1

'Что случилось' Вы используете путь эмулятора на ФИЗИЧЕСКИЕ устройства:/мнт/оболочка/** эмулировать **/0/DCIM/myPicsFolder –

+0

вы также правы – JoeCoolman

ответ

2

что не так?

корневые пути в adb shell не то же самое, как корневые пути для вашего приложения. Никогда не устанавливайте корневые пути в своем приложении. Всегда используйте методы на Environment или Context, чтобы получить корневые пути.

В этом случае Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) предоставит вам File, указывающий на каталог DCIM, с которым вы пытаетесь работать. Таким образом, использовать что-то вроде:

File dcim=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM); 
File sourceFile=new File(new File(dcim, "myPicsFolder"), "mypic.jpg"); 
+0

dcim теперь имеет значение */storage/emulated/0/DCIM * и sourceFile is */storage/emulated/0/DCIM/myPicsFolder/mypic.jpg *, и снова утверждение if ложно: - /, то это означает, что myPicsFolder не там. – JoeCoolman

+0

@JoeCoolman: Вы когда-нибудь создавали этот каталог и этот файл? «тогда это означает, что myPicsFolder не существует» - или это означает, что 'mypic.jpg' не существует или что' mypic.jpg' не является файлом (например, это каталог). – CommonsWare

+0

dcim.isDirectory() возвращает true! но 'File file = new File (Environment.getExternalStoragePublicDirectory ( \t Environment.DIRECTORY_DCIM)," myPicsFolder "); file.isDirectory()' возвращает false. Мое устройство подключено через MTP, и если я перемещаюсь по папкам, я вижу это: [DCIM] (http://juydroid.freevar.com/dcim.png) и [внутри DCIM] (http://juydroid.freevar.com/ dcim_vacio.png) и аналогично в других папках, таких как Metal или Music, где я знаю, что они не пустые. Я не вижу файлы или папки внутри папок. – JoeCoolman