【发布时间】:2013-05-25 13:24:29
【问题描述】:
我想获取我的 android 设备的公共存储路径。我有两个应用程序。一个是写一些日志文件,另一个是用来读取它们(因此我不能使用应用程序私有存储)。我想知道是否有一种方法可以为我提供设备“公共空间”的路径,我可以在其中轻松创建和读取文件。
这个解决方案不是我想要的:
http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
也不是:
How to get the internal and external sdcard path in android
我的问题有简单的解决方案吗? 我要的是外部公共存储吗?
http://developer.android.com/guide/topics/data/data-storage.html#filesExternal
问题是当我在我的设备上运行应用程序时一切正常,但是当我在没有存储卡的设备上运行它时,它就无法工作。所以我想使用外部公共存储,而不是存储卡...
我下面的代码不起作用(它不保存文件)。当我选择直接在 Environment.getExternalStorageDirectory().getAbsolutePath() 中的目录时,它可以工作......我做错了什么? :
transient private final String DIRECTORY = "/Android/data/com.aaa.bbb.ccc/files/";
public void writeLog()
{
Calendar calendar = setDate();
File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + DIRECTORY);
if(!dir.exists())
dir.mkdir();
File file = new File (dir, "log_" + calendar.get(Calendar.YEAR) + "_"
+ ((calendar.get(Calendar.MONTH))+1) + "_"
+ calendar.get(Calendar.DAY_OF_MONTH)
+ ".dta");
...
}
更新:
为什么这段代码有效:
File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Dir1/");
if(!dir.exists())
dir.mkdir();
这不是
File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Dir1/Dir2/Dir3/");
if(!dir.exists())
dir.mkdir();
【问题讨论】:
标签: java android file storage public