繁体   English   中英

从 android/emulated/0/Download 获取文件列表

[英]Getting files list from android/emulated/0/Download

您好,我正在编写应用程序,其中一项功能是读取下载的数据,我想获取 android/emulated/0/Download 包含的所有文件。 我知道这是一个内部存储,我在清单文件中只有外部存储的权限,我不知道如何添加从这个目录读取数据的权限。

 ArrayList<String> files = findURs(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), new ArrayList<String>());

这段代码是由另一个用户编写的,但我只是编辑了它

public ArrayList<String> findURs(File dir, ArrayList<String> matchingURFileNames) {
    String safPattern = ".ur";

    File listFile[] = dir.listFiles();
    if (listFile != null) {
        for (int i = 0; i < listFile.length; i++) {

            if (listFile[i].isDirectory()) {
                findURs(listFile[i], matchingURFileNames);
            } else {
                if (listFile[i].getName().endsWith(safPattern)) {
                    matchingURFileNames.add(dir.toString() + File.separator + listFile[i].getName());
                }
            }
        }
    }
    return matchingURFileNames;
}

首先像这样进行运行时权限检查,

private int REQUEST_CODE = 100;
private static String[] PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE};

 private void checkPermissions() {

        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) ==
                PackageManager.PERMISSION_DENIED) {
            ActivityCompat.requestPermissions(this, PERMISSIONS, REQUEST_CODE);


    } else {

       ArrayList<String> files = findURs(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), new ArrayList<String>());

    }



}

处理您的许可结果,

@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == REQUEST_CODE) {

            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

           ArrayList<String> files = findURs(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), new ArrayList<String>());

            }
        }
    }

还要在清单中添加,

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM