2012-03-21 58 views
0

我用下面的代码删除缩略图,以达到照片的路径和ID:通过ID

String[] projection = {MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA, MediaStore.Images.ImageColumns.DATA}; 
Cursor cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, MediaStore.Images.Media._ID); 
int count = cursor.getCount(); 
int image_column_index = cursor.getColumnIndex(MediaStore.Images.Media._ID); 
int image_path_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA); 
int i; 
for(i = 0; i < count; i++) { 
cursor.moveToPosition(i); 
long id = cursor.getInt(image_column_index); 
String p = cursor.getString(image_path_index); 
photo.add(id, p); 
} 

,并使用下面的代码来获取缩略图:当我删除一张照片由其路径

bitmap = MediaStore.Images.Thumbnails.getThumbnail(this.getApplicationContext().getContentResolver(), id, MediaStore.Images.Thumbnails.MICRO_KIND, null); 

。 删除人员的缩略图仍然存在。 如何同时删除缩略图?

+0

什么是照片?你不能使用你在那个for循环中得到的'id'来查询'MediatStore.Images.Thumbnails'提供程序并删除缩略图吗? – Luksprog 2012-03-21 07:35:27

+0

photo is LinkedList 。 – brian 2012-03-21 07:50:07

+0

我不知道如何通过id获取缩略图位置或通过id删除它。 – brian 2012-03-22 02:30:44

回答

1

您应该能够使用id从查询的图像(MediaStore.Images.Media._ID列),然后查询MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URIMediaStore.Images.Thumbnails.IMAGE_ID等于ID(IMAGE_ID删除缩略图是相同的ID从MediaStore.Images.Media._ID的ID )。

long id = cursor.getInt(image_column_index); // this is the id from MediaStore.Images.Media._ID but also the IMAGE_ID from MediaStore.Images.Thumbnails 

// if you delete the photo with this above id and also want to delete the thumbnail: 
ContentResolver cr = getContentResolver(); // in an Activity 
cr.delete(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
       MediaStore.Images.Thumbnails.IMAGE_ID + " = ?", new String[] {"" + id}); 

我没有起到多大与MediaStore所以这可能是错误的。