无法以编程方式将文件夹或文件写入Android设备

时间:2016-01-24 12:35:22

标签: android

我无法读取或写入我的Android设备。对同一主题提出了类似的问题(我已经实现了代码),但它们似乎都崩溃了我的应用程序。

Button btnUpload = (Button) findViewById(R.id.btnUpload);
File created = new File(Environment.getExternalStorageDirectory().getPath()
                        + File.separator + "MyNewFolder" + File.separator + "created");    

if (created.isDirectory()) {    
    File[] contents = created.listFiles();

    //Should not trigger as directory check is in place
    if (contents == null) {            //<--not adding this section causes a crash
        btnUpload.setEnabled(false);
    } 

    //Check to see if the number of files is 0
    else if (contents.length == 0) {
        btnUpload.setEnabled(false);
    } 

    //All checks pass. Enable button
    else {
        btnUpload.setEnabled(true);
    }
}
  • 清单文件有&#34; WRITE_EXTERNAL_STORAGE&#34;许可已添加
  • 确保手机(带有棉花糖的Nexus 5)处于调试模式并且&#34;文件传输&#34;模式被选中。

1 个答案:

答案 0 :(得分:0)

非常感谢Mike和Commonwares。

摘要:除了Manifest文件中的权限外,我们还需要在运行时检查权限(如果不存在则请求它们)。问题在于API级别23.

根据一些阅读添加了两行代码。不是最好的或遵循所有最佳编码实践,而是快速而肮脏的解决方案,因此请相应地进行修改。

if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    }

我已将此添加到我的主要活动的开头,以便我在其余时间获得权限及其设置。