2011-01-25 3 views
2

私は私のAndroidアプリの中ACTION_VIEWを使用してダウンロードしたJPGファイルを表示しようと恐ろしい時間を持っています。ファイルが存在し、正しいサイズであることを確認できます。私はエミュレータからファイルを取り出してコンピュータ上で開くことができるので、JPGが壊れていないことがわかります。私もView image in ACTION_VIEW intent?のコードを試してみました。次のようにACTION_VIEWを使用してダウンロードしたJPGを表示できますか?

私のコードは次のとおりです。

// start intent to view the file 
String filename = "test.jpg" 
String downloadsDirectoryPath = getFilesDir().getPath() + "/downloads"; 
File file = new File(downloadsDirectoryPath + "/" + filename); 

Intent i = new Intent(); 
i.setAction(Intent.ACTION_VIEW); 
i.setDataAndType(Uri.fromFile(file), "image/*");  
startActivity(i); 

それはまっすぐでなければなりませんようにこれはそうですが、私は上記のコードを実行するたびに、私はここで何が起こっているかについて

ERROR/UriImage(336): got exception decoding bitmap 
ERROR/UriImage(336): java.lang.NullPointerException 
ERROR/UriImage(336):  at com.android.camera.Util.makeInputStream(Util.java:336) 
ERROR/UriImage(336):  at com.android.camera.Util.makeBitmap(Util.java:307) 
ERROR/UriImage(336):  at com.android.camera.Util.makeBitmap(Util.java:299) 
ERROR/UriImage(336):  at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:94) 
ERROR/UriImage(336):  at com.android.camera.gallery.UriImage.fullSizeBitmap(UriImage.java:86) 
ERROR/UriImage(336):  at com.android.camera.gallery.UriImage.thumbBitmap(UriImage.java:120) 
ERROR/UriImage(336):  at com.android.camera.ImageGetter$ImageGetterRunnable.executeRequest(ImageGetter.java:173) 
ERROR/UriImage(336):  at com.android.camera.ImageGetter$ImageGetterRunnable.run(ImageGetter.java:149) 
ERROR/UriImage(336):  at java.lang.Thread.run(Thread.java:1096) 

任意のアイデアを得ます?

+0

あなたはコメントのためにあなたのAndroidManifest.xml –

+0

おかげでandroid.permission.INTERNETあなたを追加しました:

(アプリケーションに応じて)より良い解決策は、これらのいずれかを使用することが考えられます。はい、私はマニフェストでそれを持っています。私は実際にファイルがエミュレータにあることを確認することができます。私は自分の問題がjpgファイルではなくパーミッションに関連していることを理解しました。説明については、他の答えに対する私の回答を参照してください。 –

答えて

0

は、私の知る限り、プラットフォームのソースコードを見てから作ることができるよう、あなたのURIに存在しないファイルのパスを渡しています。

downloadsDirectoryPathの値は何ですか?あなたはそれが完全修飾ではありません15個の担当者のポイントを賭け...

+1

答えをありがとう。これは、downloadsDirectoryPathが良いことを示していますが、問題を把握しました。私はopenFileOut()の代わりにFileOutputStream()を使用していたので、このファイルは私(私)が読めるだけでした。だから、私はたFileOutputStreamを(不時着時)とopenFileOutput( "test.jpg"、MODE_WORLD_READABLE)を使用し、それが働きました。私はJPGに何が間違っているのか、そしてACTION_VIEWがそれを読むことができるのかどうかにはあまり集中していませんでした。内部ストレージにサブディレクトリを使用したかったのですが、おそらくそれはできません。適切な解決策は、おそらく外部ストレージを移動するか、コンテンツプロバイダを作成することです。 –

+0

あなた自身の質問に答えるのは恥ずかしいことではありません。ソリューションを回答に掲示し、それを受け入れます。解決策は私のために働いた。 – cesarislaw

0

スコットはコメントで自分の質問に答えたが、それはあまりにも私に役立つ証明したので、私は答えとして再投稿されます:イメージ上のファイルのアクセス権を確認してください。私もそれは大丈夫だった検証するための.jpgを引っ張っていたが、本当の問題はACTION_VIEWはファイルにアクセスできませんでしたように、たFileOutputStream()は、デフォルトで権限を設定していたということでした。 (個人的には、ファイルを読み取る権限が不足していることを記録する代わりに、このファイルをsegfaultsというビューアでバグと呼んでいますが、私は脱出します...)

openFileOutput( "test.jpg "、MODE_WORLD_READABLE)は、問題を修正します。

http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

関連する問題