【问题标题】:How can I stop MediaStore.ACTION_IMAGE_CAPTURE duplicating pictures如何停止 MediaStore.ACTION_IMAGE_CAPTURE 复制图片
【发布时间】:2011-11-21 21:40:44
【问题描述】:

我正在使用以下代码拍照:

private static final int TAKE_PHOTO_CODE = 1;

final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tFile));
startActivityForResult(intent, TAKE_PHOTO_CODE);

这段代码可以正常工作,但是我会自动获得我拍摄的每张照片的副本,并自动出现在“相机镜头”画廊以及我想要照片去的地方。

如何阻止它自动复制我的图片?

文件名和我指定的都不一样,所以我不能轻易删除。

感谢您的帮助!

【问题讨论】:

  • 我发现了一个添加了侦听器的示例,因此当他们拍照时,它会通知他们图像已放置在图库中,然后可以将其删除,但我宁愿停止复制首先是图像。任何想法,因为我真的坚持这个?
  • 嗨,李,你找到了这个问题的答案吗?因为我遇到了同样的问题。谢谢
  • 不,我还没有弄清楚如何解决这个问题。我目前正在尝试找到一些代码,让我可以获取添加到图库中的最新图片的文件名,以便我可以删除它。如果我不能阻止它复制图像,至少如果我可以删除重复的图像,那是下一个最好的事情。

标签: android android-camera android-gallery


【解决方案1】:

我找到了答案。

以下功能删除保存到媒体存储的最后一张照片。

public void deleteLastCapturedImage() {
    String[] projection = { 
            MediaStore.Images.ImageColumns.SIZE,
            MediaStore.Images.ImageColumns.DISPLAY_NAME,
            MediaStore.Images.ImageColumns.DATA, 
            BaseColumns._ID
    };

    Cursor c = null;
    Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

    try {
        if (u != null) {
            c = managedQuery(u, projection, null, null, null);
        }
        if ((c != null) && (c.moveToLast())) {

            ContentResolver cr = getContentResolver();
            int i = cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, BaseColumns._ID + "=" + c.getString(c.getColumnIndex(BaseColumns._ID)), null);

            Log.v(LOG_TAG, "Number of column deleted : " + i);

        }
    } finally {
        if (c != null) {
            c.close();
        }
    }
}

请在 onActivityResult 中调用上述函数。

【讨论】:

  • 谢谢,有机会我会试试看的!
  • 你只是删除那些没有这种行为的手机上的用户图像,只需再次检查你的代码
  • 我正在删除刚刚拍摄的照片。这只是编码的一部分。
猜你喜欢
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-18
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 2019-02-27
相关资源
最近更新 更多