View image in ACTION_VIEW intent?
I'd like to show a png or jpg I downloaded from the next in an image viewer intent, but can't get it to work.
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.cont开发者_开发问答ent.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(path)), "image/png");
startActivity(intent);
I know the bitmap is downloaded ok (use the same routine for supplying it my ImageView instances elsewhere in my app) - I think it wrote to file ok, I can see it on disk and the file size is correct. The intent is launched but an exception is thrown:
ERROR/ImageManager(1345): got exception decoding bitmap java.lang.NullPointerException
then the new activity just sits there, blank. How does this work?
Check out Android issue 2092 it sounds similar to what you are describing. The issue states, "Bitmap.compress() fails for PNG files saved in Indexed Color Mode (instead of RGB color mode)", however the first commenter thinks that, "it looks like its not an indexed color problem but a PNG problem."
It looks like your code is fine, compare it to this Android snippet:
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);
Another problem may be permissions on the file. Typically your /data/data/[app]/ directories are not world readable, and are owned by you applications "app_XX" user/group. Either make sure your permissions are correct, or make sure the file is in a place that both applications can read (emms, or sd card)
精彩评论