一.FilePicker一个Android文件选择器
https://blog.csdn.net/dodod2012/article/details/88868770
二.FileSelector文件选择器
https://www.jianshu.com/p/07918609f4c4
分别使用遍历文件夹的方式和查询 Androd MediaStore多媒体库资源
-
1.使用遍历文件夹:
优点
可以实时拿到所要的数据
缺点:
效率相对比较低
-
2.使用Android MediaStore:
优点
效率比较高
缺点:
在通过第三方app下载之后,如果该app没有同步多媒体库,需要自己手动去同步多媒体库才能获取到实时的数据
三. Android MediaStore(多媒体库)
MediaStore.Files存储了所有应用中共享的文件,包括图片、文件、视频、音乐等多媒体文件,包括非多媒体文件。
MediaStore类是安卓自带的android.provider.MediaStore包中的
1.MediaStore: The Media provider contains meta data for all available media on both internal and external storage devices.
媒体提供程序包含内部所有可用媒体的元数据以及外部存储设备。
2.MediaStore:
The contract between the media provider and applications. Contains definitions for the supported URIs and columns.
The media provider provides an indexed collection of common media types, such as Audio
, Video
, and Images
, from any attached storage devices. Each collection is organized based on the primary MIME type of the underlying content; for example, image/*
content is indexed under Images
. The Files
collection provides a broad view across all collections, and does not filter by MIME type.
媒体提供者和应用程序之间的契约。包含支持的uri和列的定义。
媒体提供程序提供来自任何附加存储设备的公共媒体类型(如音频、视频和图像)的索引集合。每个集合都基于底层内容的主要MIME类型进行组织;例如,图像/*内容是在图像下索引的。Filescollection提供了跨所有集合的广泛视图,并且不根据MIME类型进行筛选。
四.getContentResolver
final Cursor cursor = context.getContentResolver().query(
MediaStore.Files.getContentUri("external"),//数据源
DOC_PROJECTION,//查询类型
selection,//查询条件
selectionArgs,
MediaStore.Files.FileColumns.DATE_ADDED + " DESC");
if (cursor != null) {
fileEntities = getFiles(cursor);
cursor.close();
}
在android中,我们的应用有的时候需要对外提供数据接口,可以有如下几种方法:1)AIDL 2)Broadcast 3)ContentProvider。
每个应用程序是可以实现数据共享的,对于每一个应用程序程序都拥有一个contentprovider实例进行存储,而contentresolver则是用于管理所有程序的contentprovider实例,通过contentrescolver可以获得数据,插入数据等……至于getcontentrescolver()就是获取实例。。
内容提供者 :
https://www.cnblogs.com/zhujiabin/p/5710229.html
https://www.2cto.com/kf/201805/745094.html