最近项目中需要对好友进行发送文件需求,在android中对文件以及其它文档的获取一直没有找到一个好的案例,自己在分析“仿小米文件夹管理”时感觉自己非常的菜B,看不懂源代码。我也问了他人的思路,但是他们给我递归方法去扫描感觉很2B,想想在android中就QQ的文件目录都大得吓尿,所以还是安安静静的用内容提供者吧。看到有很多的同行也在找想关的资料,希望我的分享对大家有帮助,谢谢!
在android中其实系统已经给我们提供了一个数据库,里面包含了sd卡中所有文件的信息(大小、位置、创建时间等),所以我们只需要得到内容提供者的URI以及参数列表就O了,多媒体数据库存放的位置data/data/com.android.provider.media/databases/external.db与data/data/com.android.provider.media/databases/internal.db中,目录无法打开的同学可以安装一个模拟器进行查看。下面是代码:
注意:因为这两个数据库里面的数据是非常的多,所以建议大家开子线程获取数据。子线程获取后推送到主线程这个就不用说了吧。
首先是搜索文档的:
下面是获取视频文件的
public List<Document> getDocumentListData() {
String[] columns = new String[] {MediaStore.Files.FileColumns._ID,MediaStore.Files.FileColumns.MIME_TYPE,MediaStore.Files.FileColumns.SIZE,MediaStore.Files.FileColumns.DATE_MODIFIED,MediaStore.Files.FileColumns.DATA };
String select = "(" + FileColumns.DATA + " LIKE '