如何停止 MediaStore.ACTION_IMAGE_CAPTURE 复制图片

Posted

技术标签:

【中文标题】如何停止 MediaStore.ACTION_IMAGE_CAPTURE 复制图片【英文标题】:How can I stop MediaStore.ACTION_IMAGE_CAPTURE duplicating pictures 【发布时间】: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);

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

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

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

感谢您的帮助!

【问题讨论】:

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

【讨论】:

谢谢,有机会我会试试看的! 你只是删除那些没有这种行为的手机上的用户图像,只需再次检查你的代码 我正在删除刚刚拍摄的照片。这只是编码的一部分。

以上是关于如何停止 MediaStore.ACTION_IMAGE_CAPTURE 复制图片的主要内容,如果未能解决你的问题,请参考以下文章

如何正确停止线程

ORACLE如何停止一个JOB

Tomcat停止时如何停止执行线程?

Android如何停止线程的方式

如何将VBS停止

如何停止Discovery Studio 2.5任务(job)