Android: URI для открытия изображения с помощью ACTION View

это код

protected static final String DIR_IMAGE = "/data/data/it.android.myprogram/images/";
Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
Uri u = Uri.fromFile(destinationFile);
intent.setDataAndType(u, "image/*");
startActivity(intent); 

файл, который нужно открыть, находится в /data/data/it.android.myprogram/images, если я это сделаю:

File dir = new File(DIR_IMAGE);
String[] files = dir.list();

Файлы var содержат все файлы, но когда я запускаю

intent.setDataAndType(u, "image/*");
startActivity(intent); 

Отображается сообщение Невозможно найти /data/data/it.android.myprogram/images/img1.jpg

Почему ??


person Mimmo    schedule 13.09.2011    source источник


Ответы (1)


Файлы в /data/data/it.android.myprogram доступны только вашему приложению. Если вы хотите отправить их через Intent другим приложениям, вы должны скопировать контент, используя openFileOutput метод вашей активности.

protected static final String DIR_IMAGE = "/data/data/it.android.myprogram/images/";
String filePath = DIR_IMAGE + "fileName";
FileInputStream fileInputStream = new FileInputStream(new File(filePath));
FileOutputStream fileOutputStream = openFileOutput("fileName", Activity.MODE_WORLD_READABLE);
ByteStreams.copy(fileInputStream, fileOutputStream);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("content://it.android.myprogram/fileName"), "image/*");

Надеюсь, поможет

person Mickael M.    schedule 11.08.2012