java.lang.IllegalArgumentException:不允许移动不属于定义良好的集合的内容://media/external/file/116
更新-注意:
---开始---
private static Uri extUri = MediaStore.Downloads.getContentUri(MediaStore.VOLUME_EXTERNAL);
Uri extUri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL);
String relativeLocation = Environment.DIRECTORY_DOWNLOADS + File.separator + "AppFolder";
函数重命名(...)
boolean renameFile(Context context, String newName, String displayName) {
try {
Long id = getIdFromDisplayName(displayName);
ContentResolver contentResolver = context.getContentResolver();
Uri mUri = ContentUris.withAppendedId(extUri, id);
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.Files.FileColumns.IS_PENDING, 1);
contentResolver.update(mUri, contentValues, null, null);
contentValues.clear();
contentValues.put(MediaStore.Files.FileColumns.DISPLAY_NAME, newName);
// contentValues.put(MediaStore.Files.FileColumns.MIME_TYPE, "files/pdf");
// contentValues.put(MediaStore.Files.FileColumns.RELATIVE_PATH, relativeLocation);
// contentValues.put(MediaStore.Files.FileColumns.TITLE, "SomeName");
// contentValues.put(MediaStore.Files.FileColumns.DATE_ADDED, System.currentTimeMillis() / 1000);
// contentValues.put(MediaStore.Files.FileColumns.DATE_TAKEN, System.currentTimeMillis());
contentValues.put(MediaStore.Files.FileColumns.IS_PENDING, 0);
contentResolver.update(mUri, contentValues, null, null);
return true;
} catch (Exception ex) {
ex.printStackTrace();
}
return false;
}
函数getIdFromDisplayName(...)
@RequiresApi(api = Build.VERSION_CODES.Q)
Long getIdFromDisplayName(String displayName) {
String[] projection;
projection = new String[]{MediaStore.Files.FileColumns._ID};
// TODO This will break if we have no matching item in the MediaStore.
Cursor cursor = getContentResolver().query(extUri, projection,
MediaStore.Files.FileColumns.DISPLAY_NAME + " LIKE ?", new String[]{displayName}, null);
assert cursor != null;
cursor.moveToFirst();
if (cursor.getCount() > 0) {
int columnIndex = cursor.getColumnIndex(projection[0]);
long fileId = cursor.getLong(columnIndex);
cursor.close();
return fileId;
}
return null;
}
java.lang.IllegalArgumentException:不允许移动不属于定义良好的集合的内容://media/external/file/116
所以它对于AndroidQ是不允许的,如果你使用收集;
Uri extUri = MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL);
但对于“定义良好的集合”(如:
Uri extUri = MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL);
// Use "Pictures/MyFolder" for RELATIVE_PATH
您可以在java文件https://android.googlesource.com/platform/packages/providers/mediaprovider/+/refs/heads/master/src/com/android/providers/mediaprovider.java中看到消息
报价:
// We only support movement under well-defined collections
switch (match) {
case AUDIO_MEDIA_ID:
case VIDEO_MEDIA_ID:
case IMAGES_MEDIA_ID:
case DOWNLOADS_ID:
break;
default:
throw new IllegalArgumentException("Movement of " + uri
+ " which isn't part of well-defined collection not allowed");
}
如果重命名失败,请使用SAF(如前所述)。如何在只知道其媒体内容Uri的Android中重命名文件
问题内容: 在这里,此renameFile(..)函数在Android API 30中正常工作。但是,在Android API 29中却无效,并显示如下错误: java.lang.IllegalArgumentException:不允许移动内容:// media / external / file /116,这不是定义明确的集合的一部分 更新说明: -开始- 为了使用sdk-29,我们必须使用Ur
gradle Build:
我发现这两种可能性显示一个pdf文件。 > 打开webView,使用: 使用外部应用程序打开pdf文件: Intent Intent=新的意图(Intent.action_view);Intent.SetDataAndType(URI.FromFile(outFile),“Application/PDF”);Intent.SetFlags(Intent.Flag_Activity_NO_Histo
注意:C:\src\flutter.pub-ache\托管\pub.dartlang.org\firebase_auth_web-0.1.3 1\android\src\main\java\io\flutter\plugins\firebaseauth_web\Firebase AuthWebPlugin.java使用或覆盖不建议使用的API。注意:使用-Xlint重新编译:弃用以获取详细信息。注
有人能提出一些行动建议吗?
我正在使用maven,Eclipse。从Eclipse运行时一切都很好。但同样,如果部署在tomcat上,则返回http状态404。日志显示在类路径上未检测到Spring WebApplicationInitializer类型,但我正在使用web.xml。 如果有人能帮忙,我不知道这里有什么问题。筛选器和servlet映射没有问题。 securityFilter org.SpringFramewo