• 文件选择器


    需求:

    根据文件类型显示系统文件列表

    工具类:

    import android.content.ContentResolver;
    import android.content.Context;
    import android.database.Cursor;
    import android.net.Uri;
    import android.provider.MediaStore.Files;
    import android.provider.MediaStore.Files.FileColumns;
    
    import com.xuehu365.xuehu.model.FileTypeDetail;
    
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by Administrator on 2017/1/18.
     */
    public class MyFileUtils {
    
    
        public static List<FileTypeDetail> getSpecificTypeOfFile(Context context, String[] extension, String fileType) {
    
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            List<FileTypeDetail> list = new ArrayList<>();
            //从外存中获取
            Uri fileUri = Files.getContentUri("external");
            //筛选列,这里只筛选了:文件路径和不含后缀的文件名
            String[] projection = new String[]{
                    FileColumns.DATA,
                    FileColumns.TITLE,
                    FileColumns.DATE_MODIFIED,
                    FileColumns.SIZE
            };
            //构造筛选语句
            String selection = "";
            for (int i = 0; i < extension.length; i++) {
                if (i != 0) {
                    selection = selection + " OR ";
                }
                selection = selection + FileColumns.DATA + " LIKE '%" + extension[i] + "'";
            }
            //按时间递增顺序对结果进行排序;待会从后往前移动游标就可实现时间递减
            String sortOrder = FileColumns.DATE_MODIFIED;
            //获取内容解析器对象
            ContentResolver resolver = context.getContentResolver();
            //获取游标
            Cursor cursor = resolver.query(fileUri, projection, selection, null, sortOrder);
            if (cursor == null)
                return null;
            //游标从最后开始往前递减,以此实现时间递减顺序(最近访问的文件,优先显示)
            if (cursor.moveToLast()) {
                do {
                    //输出文件的完整路径
                    String path = cursor.getString(0);
                    String name = cursor.getString(0).substring(cursor.getString(0).lastIndexOf("/") + 1);
                    String time = format.format((new Long(cursor.getString(2))) * 1000);
                    String size = getSize(new Long(cursor.getString(3)));
                    FileTypeDetail detail = new FileTypeDetail(path, name, time, size, fileType);
                    list.add(detail);
                } while (cursor.moveToPrevious());
            }
            cursor.close();
            return list;
        }
    
        public static String getSize(long size) {
            long kb = size / 1024;
            if (kb > 0) {
                long m = kb / 1024;
                if (m > 0) {
                    return m + "M";
                } else {
                    return kb + "KB";
                }
            } else {
                return size + "B";
            }
        }
    }

    然后调用即可

    list = MyFileUtils.getSpecificTypeOfFile(MainActivity.this, new String[]{".doc", ".ppt"});
    adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list);
    lv.setAdapter(adapter);

     

  • 相关阅读:
    移除roadhog用webpack4代替
    git pull request
    java 希尔排序 归并排序 快速排序 三路快速排序
    简洁的 async await
    react-navigation 实现简单登录 跳转路由
    d3序数比例尺理解
    echarts vue 甘特图实现
    element table 实现鼠标拖拽选中
    CSS一些总结
    Nginx location 匹配规则
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/6256061.html
Copyright © 2020-2023  润新知