自弃用environment.getexternalstoragedirectory()以来,如何访问外部存储

时间:2019-08-07 00:35:58

标签: java android

我是android的新手,我想从外部存储读取所有文件,以制作一个文件浏览器应用程序,但是我找不到访问这些文件的方法。我应该用什么代替environment.getexternalstoragedirectory()?

1 个答案:

答案 0 :(得分:0)

使用getExternalFilesDir()getExternalCacheDir()getExternalMediaDir()... Read more

例如(getExternalFilesDir):

public static File getAppFileDir(Context context) {
    File file;
    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
        file = context.getExternalFilesDir(null);
    } else {
        file = context.getFilesDir();
    }
    return file;
}

会给您:

  

android / data / data / your_package_name / files


如果您仍然想使用getExternalStorageDirectory

public static File getExternalStorageDirectory(Context context) {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
        //noinspection deprecation
        return Environment.getExternalStorageDirectory();
    } else {
        try {
            File file = getAppFileDir(context);
            if (null != file) {
                //noinspection ConstantConditions
                return file.getParentFile().getParentFile().getParentFile().getParentFile();
            } else {
                return new File("");
            }
        } catch (Throwable e) {
            e.printStackTrace();
            return new File("");
        }
    }
}

但是不要在发布应用中使用它,因为我不确定它是否可以在所有设备上使用。