gpt4 book ai didi

android - getExternalFilesDir(null) 返回 null

转载 作者:IT王子 更新时间:2023-10-28 23:34:55 30 4
gpt4 key购买 nike

再一次,我遇到了一个之前已经提出并回答过的问题,但在我的实现中它仍然无法正常工作。

我在我的主要 Activity 的 onCreate 方法一开始就调用 getExternalFilesDir(null)。无论我是在 AVD 中还是在手机(Samsung Galaxy Plus)上运行它,它每次都返回 null。

是的,我有 <uses-permission android:name="android.permissions.WRITE_EXTERNAL_STORAGE" />我的 AndroidManifest.xml 中的一行,是的,我在调用电话之前检查了外部存储状态并已安装。

这是我的 onCreate() 方法中的前三行。实际上,它只是在 super.onCreate()setContentView() 调用之后。

String state = Environment.getExternalStorageState();
File extFiles = getExternalFilesDir(null);
File locFiles = getFilesDir();

所以,一旦执行了这三行,这些就是变量的值:

state == "mounted"
extFiles == null
locFiles == "/data/data/com.mypackage.name/files"

有人知道为什么会这样吗?

-----编辑-----

所以我尝试了另一种方法;而不是使用getExternalFilesDir(null) ,我尝试使用 File basePath = new File(Environment.getExternalStorageDirectory(), "myAppName");

这并不理想,我知道 Android 文档说,我同意,你应该使用 getExternalFilesDir() .看来这对我不起作用,尽管我不得不尝试其他方法。这次函数确实返回了一个有效的 File 对象,因此,在上述行之后,basePath 的路径是 /mnt/sdcard/myAppName。到目前为止,一切都很好。当我检查 DDMS 时,我可以看到 /mnt/sdcard 存在,但不存在 /mnt/sdcard/myAppName。这是可以预料的。所以我调用 boolean result = basePath.mkdirs();

但这会返回 false,当我检查文件系统时,我可以确认 myAppName 子文件夹尚未创建。当我通过 DDMS 手动创建文件夹并将文件放入其中时,我可以从我的应用程序中读取这些文件,但我无法在该文件夹中写入任何内容。

请帮忙!我已经束手无策了。

最佳答案

如果这不是您发布问题时的拼写错误,您可能会因此而讨厌自己:

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

应该是

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

关于android - getExternalFilesDir(null) 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18365574/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com