首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >图像保存两次

图像保存两次
EN

Stack Overflow用户
提问于 2011-08-18 22:52:52
回答 1查看 1.3K关注 0票数 1

我使用了以下意图:

代码语言:javascript
运行
复制
Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri);

基本上,我使用ACTION_IMAGE_CAPTURE intent来调用相机并将拍摄的图像保存到指定的uri中。

它可以工作,但同时图像也会以默认名称保存。

因此,一旦我抓拍了图片,它就会被保存两次,分别保存在uri和默认路径和名称中。

如何确保它只保存在指定的uri中?

提前谢谢你,Perumal

EN

回答 1

Stack Overflow用户

发布于 2012-01-31 00:38:17

您可以获取图库最后一张图像的ID或绝对路径。然后把它删除。

可以这样做:

代码语言:javascript
运行
复制
/**
 * Gets the last image id from the media store
 * @return
 */
private int getLastImageId(){
    final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
    final String imageOrderBy = MediaStore.Images.Media._ID+" DESC";
    Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
    if(imageCursor.moveToFirst()){
        int id = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID));
        String fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
        Log.d(TAG, "getLastImageId::id " + id);
        Log.d(TAG, "getLastImageId::path " + fullPath);
        imageCursor.close();
        return id;
    }else{
        return 0;
    }
}

并删除该文件:

代码语言:javascript
运行
复制
private void removeImage(int id) {
   ContentResolver cr = getContentResolver();
   cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, MediaStore.Images.Media._ID + "=?", new String[]{ Long.toString(id) } );
}

这段代码基于帖子:Deleting a gallery image after camera intent photo taken

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7109457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档