Как я могу использовать Intent.ACTION_VIEW для просмотра содержимого папки?

Я пытаюсь просмотреть изображения в определенной папке, используя намерение. Мой код выглядит следующим образом:

Intent intent = new Intent();  
intent.setAction(Intent.ACTION_VIEW);  
Uri imgUri = Uri.parse("file://sdcard/download");  
intent.setDataAndType(imgUri, "image/*");  
startActivity(intent);  

Однако каждый раз, когда он запускается, я получаю это сообщение в журнале:

02–25 00:40:16.271: ОШИБКА/(8359): не удается открыть «/загрузить»
02–25 00:40:16.271: ОШИБКА/(8359): не удается открыть «/загрузить»

Что я делаю неправильно?


person Jevarlo    schedule 25.02.2011    source источник
comment
У вас есть доступ к SDCard?   -  person Mudassir    schedule 25.02.2011
comment
Это совершенно не связано с вопросом, но кто-нибудь еще не видит ссылки на редактирование/изменение тегов для этого вопроса? Я что-то упустил, почему их нет?   -  person Andrew Marshall    schedule 25.02.2011
comment
Mudassir, у меня есть доступ к SD-карте, я проверил это, создав на ней простой текстовый файл.   -  person Jevarlo    schedule 25.02.2011
comment
Вы пытались добавить дополнительную косую черту в URI: "file:///sdcard/download"?   -  person Michael    schedule 25.02.2011
comment
Я только что попробовал это и продвинулся немного дальше! за исключением того, что теперь я получаю другую ошибку! Добавление дополнительной косой черты к моему URI приводит к этой ошибке: 02-25 07:37:29.106: ERROR/(10632): Not JPEG: /sdcard/download/ И даже добавление подстановочного знака в конец URI, чтобы это выглядело как этот файл:///sdcard/download/* не разрешает его.   -  person Jevarlo    schedule 25.02.2011
comment
С этим намерением он пытается найти приложение для открытия файла file://sdcard/download. Это не файл, а папка. Вам понадобится другое намерение.   -  person RvdK    schedule 18.12.2012


Ответы (4)


Я думаю, что это намного проще, чем все остальные предлагают. Я считаю, что путь чувствителен к регистру. В вашем примере должно работать "file://sdcard/Download".

person nebuhcaneza    schedule 14.05.2011

попробуй что-нибудь вроде этого

Intent intent = new Intent();
intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);

or

Intent intent = new Intent();
intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);
person OWADVL    schedule 22.01.2012

У меня была аналогичная проблема некоторое время назад, когда у меня был экземпляр, который требовал, чтобы я дал пользователю возможность выбрать фотографию из заранее определенного места. Рабочее решение для этого, которое я сейчас использую, требует, чтобы у вас уже был какой-то файловый менеджер на устройстве. Тот, который я использую, называется «OI File Manager». Его можно бесплатно скачать с Android/Play Market. С учетом сказанного вы можете попробовать использовать:

 //--Note: You can supply the full location of the folder but if you don't know it and
//         if the folder location is on the sdcard, provide the following:
 File root = new File(Environment.getExternalStorageDirectory() + File.separator + "myFolder" + File.separator);
 Uri uri = Uri.fromFile(root);

 Intent intent = new Intent();
 intent.setAction(android.content.Intent.ACTION_VIEW);
 intent.setData(Uri.fromFile(root));
 startActivityForResult(intent, PIC_REQUEST);

Что это сделает, так это откроет диалоговое окно с просьбой выбрать вариант, который будет использоваться для обработки запроса. Когда это произойдет, просто установите флажок в нижнем углу «Использовать по умолчанию ...», прежде чем выбрать опцию «OI File Manager». Это установит его таким образом, что каждый раз, когда запускается намерение, оно автоматически открывает указанное вами местоположение, чтобы вы могли просматривать содержимое без необходимости переходить к расположению папки каждый раз, когда запускается намерение. Нехорошо полагаться на стороннее приложение, но это может быть вариантом для вас.

person cking24343    schedule 07.06.2012

Intent intent = new Intent();  
intent.setAction(Intent.ACTION_GET_CONTENT);
Uri imgUri = Uri.fromFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS));
intent.setDataAndType(imgUri, "file/*");   
startActivity(intent);

работает на меня..

person thinzar00    schedule 18.12.2012