2011-07-26 27 views
3

私はthisアプリを自分の端末(Nexus s)にインストールしました。 このアプリを使用すると、いくつかの画像がキャッシュされます。このため、デバイスのギャラリーにキャッシュされたイメージが表示されます。Androidで画像ファイルを開くことができません - ファイルが見つかりません例外

/mnt/sdcard/cache/hk.ignition.podcast/cartoon/2/http%3A%:

は、私はパスを取得パス
final 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()); 
} 

を取得するためにカーソルを使用します2F%2Fbigcity.learnenglishapps.com%2Fimages%2Fcartoons%2Fset2%2Ffast食品新しい-1.png

ダウンロードしたイメージである: http://bigcity.learnenglishapps.com/images/cartoons/set2/fast-food-new-1.png

私はファイルをプルするか、アストロなどのファイルマネージャでそれを探索します。 しかし、ファイルが存在するかどうかを確認すると、falseと表示されます。

文字に問題はありますか?

更新:削除file://

は、ファイルが存在するかどうかを確認するために働いていました。

次に、私はギャラリーでそのファイルを開きたいと思います。

  1. 画像を開くにはこのパスを使用しますか? しかし、働いていないこと:
 
    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); 
  1. または私はメディアストアからcontent://スタイルのパスを取得しようとする必要がありますか?

アップデート2:使用して解決

Uri.fromFile(f); 

代わりのUri.Parse()。それはエンコード形式から/文字を構築するので。

+0

私は... WHAT U DOINについて多くIDEAを知らないことではなくUは、カーソルをファイルを保持していると思いますか..?それとも、データを保持しているだけですか? – ngesh

+0

On文 'Log.d(" path "、path);'上に示した正しいパスを得ました – Vikas

+0

あなたは正しいですが、私はあなたがその中の画像メモリへの参照を保持するカーソルの中のファイルを見つけようとしていると思います自分の道ではなく、正確なパス..事ur取得は正確なパスではありません.. – ngesh

答えて

2

変更new File("file://" + path)はちょうどnew File(path)

+0

ねえ、それは私にとっては不十分です。申し訳ありませんが、あなたは私の更新を質問しますか? – Vikas

+0

これを試してみてください: 'intent.setDataAndType(intent.setDataAndType(Uri.fromFile(file)、" image/* ");'ファイルはあなたの '新しいファイル(" file:// "+ path") '。 –

+0

ちょうど同じこと、私はやった:-) – Vikas