Посмотреть изображение в намерении ACTION_VIEW? - PullRequest
12 голосов
/ 16 ноября 2009

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

Bitmap bmp = getImageBitmap(jpg);
String path = getFilesDir().getAbsolutePath() + "/test.png"; 
File file = new File(path); 
FileOutputStream fos = new FileOutputStream(file);
bmp.compress( CompressFormat.PNG, 100, fos ); 
fos.close(); 

Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "image/png");
startActivity(intent);

Я знаю, что растровое изображение загружено нормально (используйте ту же процедуру для предоставления моих экземпляров ImageView в другом месте моего приложения) - я думаю, что оно записано в файл нормально, я вижу его на диске и размер файла правильный. Намерение запущено, но сгенерировано исключение:

ОШИБКА / ImageManager (1345): получено растровое изображение декодирования исключения java.lang.NullPointerException

тогда новое занятие просто сидит там, пустым. Как это работает?

Ответы [ 2 ]

25 голосов
/ 13 декабря 2009

Проверьте Android выпуск 2092 звучит похоже на то, что вы описываете. Проблема гласит: «Bitmap.compress () завершается ошибкой для файлов PNG, сохраненных в режиме индексированного цвета (вместо цветового режима RGB)», однако первый комментатор считает, что «это похоже не на проблему индексированного цвета, а на проблему PNG. «

Похоже, ваш код в порядке, сравните его с этим фрагментом Android:

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
File file = new File("/sdcard/test.mp4");  
intent.setDataAndType(Uri.fromFile(file), "video/*");  
startActivity(intent);   

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
File file = new File("/sdcard/test.mp3");  
intent.setDataAndType(Uri.fromFile(file), "audio/*");  
startActivity(intent); 
4 голосов
/ 23 сентября 2011

Еще одной проблемой могут быть права доступа к файлу. Обычно ваши каталоги / data / data / [app] / не доступны для чтения всем пользователям и принадлежат пользователю / группе app_XX приложений. Либо убедитесь, что ваши разрешения правильные, либо убедитесь, что файл находится в месте, которое могут прочитать оба приложения (emms или sd card)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...