Android外部数据存储问题

cap*_*666 6 android

我试图将数据存储在SD卡上,根据指南在这里,我应该使用getExternalFilesDir()(API等级8),我真的想这样做,但电话
File directory = context.getExternalFilesDir(null);一直回来null,我用我的主要活动为背景.
然后我尝试恢复使用File dir = Environment.getExternalStorageDirectory();,它正确返回SD根,但显然我无法创建建议的"/ Android/data/package_name/files /"目录:

    File root = Environment.getExternalStorageDirectory();
    File dir = new File(root, GlobalConstants.EXTERNAL_SAVE_DIR);
    boolean canCreate = dir.mkdirs();
Run Code Online (Sandbox Code Playgroud)

在此代码中canCreate为false(EXTERNAL_SAVE_DIR显然是/ Android/data/package_name/files /).

有什么我想念的,也许我应该问一下Manifest的权限(我什么都没发现)?我读过getExternalFilesDir()有一个错误,其中的内容在应用程序更新时被删除,我并不真正关心它,我宁愿使用它而不是另一个,因为我试图符合API 8,我喜欢的想法它为我处理目录名称.

任何的想法?

小智 21

您需要将以下内容添加到清单中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
Run Code Online (Sandbox Code Playgroud)

否则,您不能写入SD卡.如果您使用的是Eclipse,则可以使用清单编辑器的权限选项卡进行添加.

  • 我不明白为什么文档没有在数据存储部分中提到此权限.+1它解决了我的问题. (9认同)
  • 亲爱的读者 - 如果您在Manifest中遇到同样的问题,请尝试重新启动手机或启用然后禁用USB存储.我有2.2的情况,其中安装了外部存储并且许可已到位,但app无法写任何内容.连接到计算机并打开 - >关闭USB存储模式为我解决了这个问题. (2认同)