使用android摄像头时,如何删除库中的重复图片?

使用android摄像头时,如何删除库中的重复图片?,android,camera,gallery,Android,Camera,Gallery,我在活动中使用Android摄像头拍照: Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, getImagePath()); startActivityForResult(intent, TAKE_PHOTO_CODE); 当我离开相机应用程序时,照片保存在两个地方: 在getImagePath()方法指定的路径上(这是正确的) 走进画廊。我

我在活动中使用Android摄像头拍照:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, getImagePath());
startActivityForResult(intent, TAKE_PHOTO_CODE);
当我离开相机应用程序时,照片保存在两个地方:

  • 在getImagePath()方法指定的路径上(这是正确的)
  • 走进画廊。我不知道那是什么

  • 如何防止照片保存到库中?如果我做不到,如何在onActivityResult()中获取照片路径,以便删除它?

    是否将图像保存到getImagePath()代码中的SD卡中?如果是这样,Android媒体扫描仪将从该位置将其拾取并显示在多媒体资料中。您可以在保存图像的目录中创建一个名为.nomedia的空文件,以便媒体扫描仪忽略该文件夹中的所有媒体文件。

    对于
    Intent.ACTION\u GET\u CONTENT
    您可以删除库文件(将其复制到文件夹后)。也许这也适用于
    MediaStore.ACTION\u IMAGE\u CAPTURE
    (使用
    MediaStore.EXTRA\u输出
    )。我使用以下代码片段删除从
    Intent.ACTION\u GET\u CONTENT
    返回的库文件:

    public String getRealPathFromURI(Uri contentUri) {
      String[] proj = { MediaStore.Images.Media.DATA };
      Cursor cursor = managedQuery(contentUri, proj, null, null, null);
      int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
      cursor.moveToFirst();
      return cursor.getString(column_index);
    }
    
    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      Uri u = data.getData();
      new File(getRealPathFromURI(u)).delete();
      ...
    

    否,getImagePath()只返回Uri。我不知道.nomedia文件可能对将来有用。但是,这并不能解决我的问题。您将图像文件保存到哪里?此方法不适用于意图意图(MediaStore.ACTION\u IMAGE\u CAPTURE),因为在onActivityResult中返回的意图(在您的情况下是数据)为空!