IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 关于如何弄出一个正常好用的文件管理器. -> 正文阅读

[移动开发]Android 关于如何弄出一个正常好用的文件管理器.

1.文件管理器的选择
由于本人是一个懒人,而且又不是很喜欢写重复的轮子,更喜欢把人家的轮子拿过来改一波。所以我直接选择Start最高的兄弟的文件管理器.

https://github.com/fishwjy/MultiType-FilePicker
这里其实可以自己写一下可能自己的思路,大致上应该是RecycView去配上查找所有文件然后进行分类的这样的思路,当然这里FilePicker寻找的文件搭配上的Android自带的媒体库,这样就不用那么麻烦了…
在这里插入图片描述

2.FilePicker修改文件后不更新
查了很多地方其实都是因为FilePicker是根据Android自带媒体库(数据库)没有更新导致的,所以就算你下载 OR UPLoad文件到你Android设备上也是没有任何改变的,你重启一下之后,就发现啥都有了…神奇~,这是因为Android重启后会自动刷新一次自己的媒体库.

3.手动刷新媒体库
不知道为什么现在的好多好多方法仍然还在发广播,而且也没有出来说一些新的方法,导致这里我卡了挺久的。以前的发广播的方法我就不说了,这里根本就没啥用。
主要还是靠MediaScannerConnection这个类.
可以直接调用MediaScannerConnection.scanFile(context,file,null,null);这个静态方法。当然这里有一个问题,file只是单独一个文件,是否可以是一个目录file?
结果是:可以,但是没那么可以

4.刷新sdcard某一文件类型的媒体库
上面为什么说,只是感觉可以呢?。因为如果是一个目录的file,你新增的文件确实是可以更新到媒体库,但是我突发奇想。用文件管理器去修改文件名是否也会更新.答案是不会…emmm 0 0,但是如果直接定位到具体的file,那是可以正常更新的…
在这里插入图片描述
这就是导致了我们必须要将sdcard里面的文件全部拿出来,然后一个个好好的刷新一遍。
代码很少,注意了~!!
FilePicker的加入我就不写了,你们自己弄哈~

   List<File> fileList =new ArrayList<>();
    List<String> fileStringList = new ArrayList<>();
    //扫描所有文件
    private void scan(File file,String Extension) {
        if (file.isFile()) {
            if (file.getPath().substring(file.getPath().length() - Extension.length()).equals(Extension)) //判断扩展名
            fileList.add(file);
            return;
        }
        File[] files = file.listFiles();
        if (files == null) {
            return;
        }
        for (File f : file.listFiles()) {
            scan(f,Extension);
        }
    }

public void onPickDoc() {

        Log.d(TAG, "onPickDoc: "+System.currentTimeMillis());
        scan(Environment.getExternalStorageDirectory(),"mp3");
        for(File d:fileList){
            Log.d(TAG, "onPickDoc: 试一下这个牛逼的循环先"+d.getPath());
            fileStringList.add(d.getPath());
        }
        Log.d(TAG, "onPickDoc: "+System.currentTimeMillis());

        String[] cc = new String[fileStringList.size()];
        fileStringList.toArray(cc);
        for(String d:cc){
            Log.d(TAG, "onPickDoc: kkkkkkkkkk_popo4:--->:"+d);
        }

        MediaScannerConnection.scanFile(this, cc, null, new MediaScannerConnection.OnScanCompletedListener() {
            @Override
            public void onScanCompleted(String path, Uri uri) {
                Log.d(TAG, "onScanCompleted: ????" +path);
                Log.d(TAG, "onScanCompleted: ????" +uri.getPath());

            }
        });

        String[] zips = {"zip", "rar"};
        String[] pdfs = {"aac"};
        String[] Mp3 = {"mp3"};
        int maxCount = MAX_ATTACHMENT_COUNT - photoPaths.size();
        if ((docPaths.size() + photoPaths.size()) == MAX_ATTACHMENT_COUNT) {
            Toast.makeText(this, "Cannot select more than " + MAX_ATTACHMENT_COUNT + " items",
                    Toast.LENGTH_SHORT).show();
        } else {
            for(Uri d:docPaths) {
                Log.d("TAG", "onPickDoc: xxxxx" + d.getPath());
            }
            Log.d("TAG", "onPickDoc: sadfasdfweqrqwerqwer");
            FilePickerBuilder.getInstance()
                    .setMaxCount(1)
                    .setSelectedFiles(docPaths)

                    .setActivityTheme(R.style.FilePickerTheme)
                    .setActivityTitle("Please select doc")
//                    .setImageSizeLimit(5) //Provide Size in MB
//                    .setVideoSizeLimit(20)
                    .addFileSupport("ZIP", zips)
                    .addFileSupport("AAC", pdfs, R.drawable.pdf_blue)
                    .addFileSupport("mp3", Mp3, R.drawable.pdf_blue)

                    .showFolderView(false)
                    .enableDocSupport(true)
                    .enableSelectAll(true)
                    .sortDocumentsBy(SortingTypes.NAME)
                    .withOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED)
                    .pickFile(this);
        }
    }

好了,运功完毕,如果对你们有用,就希望点个赞吧~祝天下打工崽们头发茂盛茂盛.

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:45:21  更:2021-07-11 16:45:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 8:43:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码