it-swarm-ja.tech

ACTION_VIEWインテントで画像を表示しますか?

次にダウンロードした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のデコードで例外が発生しました

その後、新しいアクティビティは空白のままになります。これはどのように作動しますか?

12
Mark

チェックアウト Androidの問題2092 それはあなたが説明しているものと似ているように聞こえます。この問題は、「(RGBカラーモードではなく)インデックスカラーモードで保存されたPNGファイルに対してBitmap.compress()が失敗する」と述べていますが、最初のコメント投稿者は、「インデックスカラーの問題ではなく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); 
25
David Glass

別の問題は、ファイルのアクセス許可である可能性があります。通常、/ data/data/[app] /ディレクトリは誰でも読み取り可能ではなく、アプリケーション「app_XX」ユーザー/グループによって所有されます。権限が正しいことを確認するか、ファイルが両方のアプリケーションが読み取れる場所(emmsまたはSDカード)にあることを確認してください

4
wuntee