android - getExternalFilesDir(null) 返回 null

标签 android

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

我在我的主要 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/

相关文章:

Android:bindService 总是返回 false(扩展 APK api)

android - Facebook 安卓 SDK 4.0 : newGraphPathRequest returns "An active access token must be used to query information about the current user."

android - 获取打开文件的默认应用程序的图标

android - 现有 NFC 读取器基础设施的应用程序 ID

android - 声级未显示

android - 库源文件应该如何引用其父项目中的字符串资源?

android - 使用 QtCreator 使用 BOOST_ALL_NO_LIB 构建 android 时未定义对 boost::system::system_category 的引用

java - 从 Android 调用邮件 PHP 文件不起作用

java - 如何通过另一个 Activity 显示数据库中的特定行?

android - Kotlin 协程 Flow 中 RxJava Observable 和 FlatMap 的等价物是什么