如何在知道URI的情况下从android中删除图像?

问题描述 投票:-1回答:2

我正在开发一个Android应用程序,它在一个活动中从库中选择一个图像并将其显示在另一个活动中。但是当我尝试删除所选图像时它不会删除。我正在两个活动之间传递它的uri。提前谢谢了!!!!

这是我的代码:

活动家园

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);

     if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
          Uri uri = data.getData();
          Intent i = new Intent(this, Imageviewer.class);       
          i.putExtra("imgpath", uri.toString());
          startActivity(i);
     }
}

IMAGEVIEWER活动:

Uri imageUri;
imageUri = Uri.parse(intent.getStringExtra("imgpath"));
File fdelete = new File(imageUri.toString());

    if (fdelete.exists()) {
         if (fdelete.delete()) {
               System.out.println("file Deleted :" );
         } else {
               System.out.println("file not Deleted :");
         }
    }
android android-intent uri gallery delete-file
2个回答
2
投票

首先,你必须采取真实的图像路径:

//getting real path from uri
private String getFilePath(Uri uri) {
    String[] projection = {MediaStore.Images.Media.DATA};

    Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
    if (cursor != null) {
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(projection[0]);
        String picturePath = cursor.getString(columnIndex); // returns null
        cursor.close();
        return picturePath;
    }
    return null;
}

然后你可以删除这个文件,如下所示:

Uri imageUri;
imageUri = Uri.parse(intent.getStringExtra("imgpath"));
File fdelete = new File(getFilePath(imageUri));

if (fdelete.exists()) {
     if (fdelete.delete()) {
           System.out.println("file Deleted :" );
     } else {
           System.out.println("file not Deleted :");
     }
}

0
投票

试试这个:(在第二个ActivityImageViewerActivity在你的情况下。

Intent intent = getIntent();
        String receivedPath = intent.getExtras().getString("imgpath");
        File fdelete = new File(receivedPath);

        if (fdelete.exists()) {
            if (fdelete.delete()) {
                System.out.println("file Deleted :" );
            } else {
                System.out.println("file not Deleted :");
            }
        }

你也可以逐行调试你的代码,看看并检查ImgPath是否正确!

© www.soinside.com 2019 - 2024. All rights reserved.