私は、現在市場に出回っている私のアプリに重要なアップデートを出荷しようとしています。私は、MediaStoreのサムネイルを照会し、サムネイルをGridViewにロードする必要があります。これまでのところ、今のところ、サムネイルへのパスである私のものだけに基づいて、実際のフルサイズの画像のパスをユーザーの外部ストレージに取得する必要があります。ユーザーがサムネイル、共有、表示、移動、削除をクリックするたびに4つのアクションを実行できるようにする必要がありますが、サムネイルパスだけではできません。すべて試しました。仕事:/。以下に私の実装のスニペットを示します。これに関するヘルプやガイダンスは非常に高く評価されます。 Androidがサムネイルから画像へのパスを取得していますか?
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
int columnIndex = 0;
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, null, null, null);
if(cursor != null){
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToPosition(position);
imagePath = cursor.getString(columnIndex);
FileInputStream is = null;
BufferedInputStream bis = null;
try{
is = new FileInputStream(new File(imagePath));
bis = new BufferedInputStream(is);
Bitmap bitmap = BitmapFactory.decodeStream(bis);
useThisBitmap = Bitmap.createScaledBitmap(bitmap, parent.getWidth(), parent.getHeight(), true);
bitmap.recycle();
}catch(Exception e){
//Try to recover
}
finally{
try{
if(bis != null){
bis.close();
}
if(is != null){
is.close();
}
cursor.close();
projection = null;
}catch(Exception e){
}
}
}
Toast.makeText(this, " " + imagePath, Toast.LENGTH_SHORT).show();
は、これまでのところ私はIMAGEPATHメンバーを使用して、すべてを試してみたが、それは例外がスローされたか、他のエラーされますどちらか。助言がありますか?
あなたはgridviewのimageadapterに何を持っていますか? – jxgn
このコードではありがとうございますが、選択したイメージの正確なパスが与えられていません。最初のイメージを選択すると、2番目のイメージのパスが与えられます。 – Prabs
[this helped](http://stackoverflow.com/a/6548026/4361127) – Prabs