如何获取Android目录中的文件列表?

我想列出目录中的所有图像以制作画廊。下面的示例使用 Intent 获取目录路径。


我已经尝试过该listFiles()方法,但它返回 null。


protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    //Permision Request

    ActivityCompat.requestPermissions(MainActivity.this,

            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},

            1);

    initialize();

}


//For the Intent to get Folder

private void initialize() {

    Intent i = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);

    i.addCategory(Intent.CATEGORY_DEFAULT);

    startActivityForResult(Intent.createChooser(i, "Choose directory"), 9999);

}


public void onActivityResult(int requestCode, int resultCode, Intent data) {

    switch(requestCode) {

        case 9999:

            //File myFile = new File(data.getData().toString());

            String path = data.getData().toString();

            //View the path

            Log.i("Test", "Result URI " + path);

            Toast.makeText(getApplicationContext(), "Result URI " +data.getData().toString(), Toast.LENGTH_LONG).show();


            //Creating new File for the directory

            File directory = new File(path);

            File[] files = directory.listFiles();


            Log.d("Files", "Size: "+ files.length);

            for (int i = 0; i < files.length; i++)

            {

                //Show the name of the files in the directory

                Log.d("Files", "FileName:" + files[i].getName());

            }


            break;

    }

}

在清单中我也有读取外部存储的权限


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

摇曳的蔷薇
浏览 286回答 1
1回答

泛舟湖上清波郎朗

下面的示例使用 Intent 来获取目录路径。不,它是用来ACTION_OPEN_DOCUMENT_TREE获取文档树的。这可能代表也可能不代表文件系统上的目录。Uri使用返回的最简单方法ACTION_OPEN_DOCUMENT_TREE是使用DocumentFile.fromTreeUri().&nbsp;然后,您可以调用listFiles()它来获取DocumentFile指向该树中文档(和子树)的对象。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java