当图像的URI已知时,如何从android中删除图像?
我正在开发一个android应用程序,它在一个活动中从图库中选择一个图像并在另一个活动中显示。但是当我尝试删除所选图像时,它不会删除。我在两个活动之间传递它的uri。非常感谢 这是我的密码: 活动主屏幕当图像的URI已知时,如何从android中删除图像?,android,android-intent,uri,gallery,delete-file,Android,Android Intent,Uri,Gallery,Delete File,我正在开发一个android应用程序,它在一个活动中从图库中选择一个图像并在另一个活动中显示。但是当我尝试删除所选图像时,它不会删除。我在两个活动之间传递它的uri。非常感谢 这是我的密码: 活动主屏幕 protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if
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 :");
}
}
尝试以下操作:(在第二个活动中
)ImageViewerActivity
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
是否正确 首先,您必须获取图像的真实路径:
//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 :");
}
}
在
活动主屏幕中
将imgpath
转换为字符串一次,然后在imgviewer活动中也转换了URI
,这就是问题所在。这样做:首先从URI获取imgpath,将其转换为字符串,然后将其发送到下一个活动(IMAGEVIEWER
)这样就不需要转换它或将其用作Uri
,只需检索路径,然后使用它。另外,检查以下答案:getFilePath返回nullalways@hkchakladar也许您没有正确的读取存储权限?如果您的android版本高于5,则必须向用户请求运行时许可。