【发布时间】:2021-03-22 07:59:35
【问题描述】:
我正在尝试删除多个项目,但问题是当单击警报对话框是删除这些项目时,所有选定的项目都将被删除,但对话框仍保留在屏幕上而不是关闭。当您在对话框上再次单击“是”时,它会出现错误。
List<ItemFiles> selectList = new ArrayList<>();
ArrayList<String> delete = new ArrayList<>();
for (ItemFiles itemfiles1 : selectList) {
String idd = itemfiles1.getId();
delete.add(idd);
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setCancelable(true)
.setMessage("Are you sure?")
.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
for (String ss : delete) {
long long_id = Long.parseLong(ss);
Uri uri = ContentUris.withAppendedId(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, long_id);
activity.getContentResolver.delete(uri, null, null);
itemfiles.remove(position);
notifyItemRemoved(position);
}
dialog.dismiss();
}
})
.setNegativeButton("no", null);
AlertDialog alertDialog = builder.create();
alertDialog.show();
alertDialog.getButton(alertDialog.BUTTON_NEGATIVE)
.setTextColor(ContextCompat.getColor(activity, R.color.black));
alertDialog.getButton(alertDialog.BUTTON_POSITIVE)
.setTextColor(ContextCompat.getColor(activity, R.color.black));
} }
本例中的列表有 ids [1275, 1274] 将被删除并返回错误 java.lang.SecurityException: com.example.mper 无权访问 content://media/external/video/media/1275
【问题讨论】:
-
selectList 是什么?要删除的项目列表还是整个列表?
-
它是选定项目的列表,而不是整个列表。公共静态列表
TotalList = new ArrayList(); List selectList = new ArrayList(); -
检查您的权限。
-
您能否详细说明我需要检查什么样的权限。在我的清单中,我有 READ_EXTERNAL_STORAGE WRITE_SETTINGS android:requestLegacyExternalStorage="true" 。
-
要删除,您必须拥有 WRITE_EXTERNAL_STORAGE 权限。
标签: android delete-file selecteditem