遍历本地文件,小米系统不行,华为的可以

public List<String> files = new ArrayList<String>();//扫描文件结果集
public static Boolean isEnd = false;//判断扫描是否结束
public static Integer total = 0;//已扫描文件总数
public static Integer num = 0;//已识别文件数
private String fullPath = "/home";//扫描文件路径

/**
 * 方法说明:搜索文件
 * 方法名:searchFiles
 * @param dir
 * 返回值:void
 */
private void searchFiles(File dir) {
    if(!isEnd) {
        File[] allfiles = dir.listFiles();
        if(allfiles != null && allfiles.length > 0) {
            for (int i = 0; i < allfiles.length; i++) {

                File file = allfiles[i];
                if(file.isDirectory()) {
                    searchFiles(file);
                } else {
                    Log.e("TAG", "searchFiles: "+file.getAbsolutePath() );
                    total++;
                    if(isEnd) {
                        break;
                    }

                    if(FileType.isCheckFile(file)) {
                        files.add(file.getAbsolutePath());
                    }
                }
                if(i%7 == 0) {
                    System.gc();
                }

            }
        }
    }
}

别扯华为还是小米,直接报Android版本号,Android新版本的对外置存储的读写做了严格的限制,所以MIUI新版本可能是新版本的Android系统,而华为由于众所周知的原因还是旧版本的,所以才可能出现这个问题。

我以前用安卓10系统的手机中,华为手机经常出现一些问题,你的怎么相反了
检查一下


if(!isEnd){ 
    ...代码省略
    //最后,遍历完成后,重新设定isEnd默认值
    isEnd= false
}