Android11-File.listFiles()没有返回一些扩展名文件。
创始人
2024-08-20 09:30:29
0

在Android 11中,由于隐私限制的修改,File.listFiles()函数可能无法返回所有文件。解决此问题的最佳方法是使用新的媒体访问框架(MediaStore)来获取指定扩展名的所有文件。以下是代码示例:

private List getFilesWithExtension(String extension) {
    List files = new ArrayList<>();
    ContentResolver resolver = getContentResolver();
    Uri uri = MediaStore.Files.getContentUri("external");
    String[] projection = {MediaStore.Files.FileColumns.DATA};
    String selection = MediaStore.Files.FileColumns.DISPLAY_NAME + " LIKE ? AND " + MediaStore.Files.FileColumns.MEDIA_TYPE + " = ?";
    String[] selectionArgs = new String[]{"%" + extension, String.valueOf(MediaStore.Files.FileColumns.MEDIA_TYPE_NONE)};
    String sortOrder = null;
    Cursor cursor = resolver.query(uri, projection, selection, selectionArgs, sortOrder);

    if (cursor != null) {
        int dataColumnIndex = cursor.getColumnIndex(MediaStore.Files.FileColumns.DATA);
        while (cursor.moveToNext()) {
            String filePath = cursor.getString(dataColumnIndex);
            files.add(new File(filePath));
        }
        cursor.close();
    }

    return files;
}

上述代码中,我们使用MediaStore.Files.getContentUri("external")来获取存储在外部存储的媒体文件的URI。我们使用MediaStore.Files.FileColumns.DISPLAY_NAME和MediaStore.Files.FileColumns.MEDIA_TYPE来创建选择条件,以获取指定扩展名的所有文件,同时排除媒体文件。最后,我们使用ContentResolver来查询数据库并获取File对象列表。

相关内容

热门资讯

8稳赢(Wepoke稳赢)外挂... 8稳赢(Wepoke稳赢)外挂透明挂辅助工具(辅助挂)切实教程(有挂方法)-哔哩哔哩;(需添加指定薇...
1免费!网易棋牌怎么才能赢(辅... 1免费!网易棋牌怎么才能赢(辅助挂)太坑了原来真的有挂(真实有挂)-哔哩哔哩1、超多福利:超高返利,...
1个神器!德扑之星隐藏功能(操... 1个神器!德扑之星隐藏功能(操作)软件透明挂(证实有挂)-哔哩哔哩;(需添加指定薇136704302...
两个插件!微扑克数据辅助软件(... 两个插件!微扑克数据辅助软件(软件)透视辅助(有挂讲解)-哔哩哔哩;致您一封信;亲爱微扑克数据玩家:...
第8挂(GG扑克)外挂透明挂辅... 第8挂(GG扑克)外挂透明挂辅助软件(透视)曝光教程(有挂总结)-哔哩哔哩;GG扑克简单的灵活控制,...
第九外挂!休闲游戏辅助工具(透... 一、休闲游戏辅助工具简介了解软件请加微:136704302休闲游戏辅助工具是一款在线扑克游戏平台,玩...
第十个漏洞!德扑ai人工智能(... 第十个漏洞!德扑ai人工智能(德州辅助软件线上)辅助透视(真的有挂)-哔哩哔哩 科技详细教程;757...
1个苹果版!微扑克使用方法(有... 1个苹果版!微扑克使用方法(有挂)透视辅助(真实有挂)-哔哩哔哩是一款可以让一直输的玩家,快速成为一...
7苹果版(aapoker有挂)... 7苹果版(aapoker有挂)外挂透明挂辅助软件(辅助挂)黑科技教程(了解有挂)-哔哩哔哩;aapo...
第6机器人!边锋麻将有挂吗(辅... 第6机器人!边锋麻将有挂吗(辅助挂)太坑了其实真的有挂(有挂功能)-哔哩哔哩是一款可以让一直输的玩家...