ContentResolver怎么查找自定后缀的文件?
比如我有若干个后缀为abc的文件,这个.abc是自定义的,mimetype里没有,ContentResolver的查找条件要怎么写才能找到abc类型的文件?
方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”
需要注意的是,ContentResolver默认只能识别Android系统预先定义的文件类型,如果是自定义的文件类型,ContentResolver是无法识别的。
为了解决这个问题,您可以将自定义文件类型的数据存储在应用程序内部存储中,并通过构建自己的查询条件来读取数据。您可以使用File类和Java的文件I/O相关API来实现此目的。
此外,您还可以使用ContentProvider来存储您的自定义文件类型的数据,并通过ContentResolver来读取数据。这样,您可以避免直接使用文件系统和Java文件I/O相关的API,并保证数据隔离。
以下是一个简单的实现方案:
定义自己的ContentProvider,继承ContentProvider并实现必要的方法。
在ContentProvider的query方法中,构建自己的查询条件并返回符合条件的数据。
在您的应用程序中使用ContentResolver读取数据。
望采纳,如下:
ContentResolver cr = context.getContentResolver();
Uri uri = MediaStore.Files.getContentUri("external");
String[] projection = null;
String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_NONE;
String[] selectionArgs = null;
String sortOrder = null;
Cursor allNonMediaFiles = cr.query(uri, projection, selection, selectionArgs, sortOrder);
又找了一下,发现可以这么写
selection = MediaStore.Files.FileColumns.DISPLAY_NAME +" like ?"
selectionArgs = arrayOf("%.abc")