Android - 访问存储位置

时间:2016-09-07 14:51:50

标签: android android-studio

好的,快速提醒我是Android编程的新手。 我对uni的java有非常基本的经验。 我最近一直在为我的三星Galaxy Tab安装android studio和app。 很抱歉,如果之前有人询问过,但我看不到它。

我试图创建一个显示SD卡上所有文件名称的应用程序。就在顶层。我只用了一个按钮和一个文本视图来创建一个快速界面(我离开单个文本视图不会显示列表但有问题,但无论如何我都去了)

最终得到以下代码。

*public void ShowFolder(View view){
    TextView test = (TextView)findViewById(R.id.View);
    root = new File(Environment.getRootDirectory().toString());

    File[] Files;
    Files = root.listFiles();

    String[] File_List;
    File_List = root.list();*

然后我使用调试器运行它以查看最终在两个数组列表中的内容。 我将此代码运行了三次,但将“Environment.getRootDirectory”更改为“getExternalStorageDirectory()”和“getDataDirectory()”。

只有getRootDirectory版本会返回任何内容。在其他两个实例中,调试器对Files和Files_list都显示NULL。 我知道它们是有效的位置,因为使用那些命令然后输出到字符串,我可以使用文件浏览器手动在平板电脑上找到它。

所以,简单地说,为什么这三个选项都没有返回文件列表? 我首先想到它的权限,但我不确定如何确认这一点。

(对不起,长篇文章)

1 个答案:

答案 0 :(得分:1)

请勿使用toString()创建FilegetRootDirectory()已经返回File个对象。

尝试这样的事情:

File root = Environment.getRootDirectory();
String[] rootList = root.list();
File[] rootListFiles = root.listFiles();

您还需要获得READ_EXTERNAL_STORAGE权限,如getExternalStorageDirectory()

的文档中所示