私はthisアプリを自分の端末(Nexus s)にインストールしました。 このアプリを使用すると、いくつかの画像がキャッシュされます。このため、デバイスのギャラリーにキャッシュされたイメージが表示されます。Androidで画像ファイルを開くことができません - ファイルが見つかりません例外
/mnt/sdcard/cache/hk.ignition.podcast/cartoon/2/http%3A%:
は、私はパスを取得パスを取得するためにカーソルを使用します2F%2Fbigcity.learnenglishapps.com%2Fimages%2Fcartoons%2Fset2%2Ffast食品新しい-1.pngfinal String[] columns = { MediaStore.Images.Media.DATA }; Cursor imagecursor = managedQuery( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, MediaStore.Images.Media._ID + " = " + id, null, MediaStore.Images.Media._ID); if (imagecursor != null && imagecursor.getCount() > 0){ imagecursor.moveToPosition(0); String path = imagecursor.getString(imagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)); Log.d("path", path); File f = new File("file://" + path); Log.d("check_file", "" + f.exists()); }
ダウンロードしたイメージである: http://bigcity.learnenglishapps.com/images/cartoons/set2/fast-food-new-1.png
私はファイルをプルするか、アストロなどのファイルマネージャでそれを探索します。 しかし、ファイルが存在するかどうかを確認すると、false
と表示されます。
文字に問題はありますか?
更新:削除file://
は、ファイルが存在するかどうかを確認するために働いていました。
次に、私はギャラリーでそのファイルを開きたいと思います。
- 画像を開くにはこのパスを使用しますか? しかし、働いていないこと:
Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setDataAndType( Uri.parse("file:///mnt/sdcard/cache/hk.ignition.podcast/cartoon/2/http%3A%2F%2Fbigcity.learnenglishapps.com%2Fimages%2Fcartoons%2Fset2%2Ffast-food-new-1.png"), "image/*"); startActivityForResult(intent, 3);
- または私はメディアストアから
content://
スタイルのパスを取得しようとする必要がありますか?
アップデート2:使用して解決
:
Uri.fromFile(f);
代わりのUri.Parse()
。それはエンコード形式から/
文字を構築するので。
私は... WHAT U DOINについて多くIDEAを知らないことではなくUは、カーソルをファイルを保持していると思いますか..?それとも、データを保持しているだけですか? – ngesh
On文 'Log.d(" path "、path);'上に示した正しいパスを得ました – Vikas
あなたは正しいですが、私はあなたがその中の画像メモリへの参照を保持するカーソルの中のファイルを見つけようとしていると思います自分の道ではなく、正確なパス..事ur取得は正確なパスではありません.. – ngesh