【发布时间】:2020-03-04 10:15:12
【问题描述】:
我正在创建一个应用程序,允许用户从图库中选择图像并将其存储在我的数据库中。 我成功地做到了。
现在我也希望从手机存储中删除所选图像。 那我该怎么做呢?
我什至可能想稍后在用户库中恢复它。
这就是我从图库中获取图像的方法。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{
switch (requestCode)
{
case 42:
if (resultCode == RESULT_OK)
{
Uri uri = data.getData();
InputStream inputStream = null;
try
{
inputStream = getBaseContext().getContentResolver().openInputStream(uri);
Bitmap bm = BitmapFactory.decodeStream(inputStream);
int maxHeight = 1920;
int maxWidth = 1920;
float scale = Math.min(((float) maxHeight / bm.getWidth()), ((float) maxWidth / bm.getHeight()));
Matrix matrix = new Matrix();
matrix.postScale(scale, scale);
Bitmap bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
saveImageToInternalStorage(bitmap, getFileName(uri));
bm.recycle();
bitmap.recycle();
finishActivity(42);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
}
}
这是我得到的 Uri 路径
content://com.android.providers.media.documents/document/image%3A5857
我的 onActivityResult 看起来像这样:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{
switch (requestCode)
{
case 42:
if (resultCode == RESULT_OK)
{
Uri uri = data.getData();
InputStream inputStream = null;
try
{
inputStream = getBaseContext().getContentResolver().openInputStream(uri);
Bitmap bm = BitmapFactory.decodeStream(inputStream);
int maxHeight = 1920;
int maxWidth = 1920;
float scale = Math.min(((float) maxHeight / bm.getWidth()), ((float) maxWidth / bm.getHeight()));
Matrix matrix = new Matrix();
matrix.postScale(scale, scale);
Bitmap bitmap = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
saveImageToInternalStorage(bitmap, getFileName(uri));
bm.recycle();
bitmap.recycle();
finishActivity(42);
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
}
}
}
【问题讨论】:
-
getContentResolver().delete(uri, null, null);对 Android Q 来说已经足够了。
-
需要 android.permission.MANAGE_DOCUMENTS 或 grantUriPermission() -> 给我这个错误并且图像未被删除@blackapps
-
请发布一个 onActivityResult 函数,您只尝试删除所选图像。并告诉那里是哪个 Android 版本。
-
不工作@blackapps
-
你没有发布任何内容。
标签: android android-studio android-intent android-gallery