getExternalCacheDir() 在清除数据后返回 null
我有一个简单的应用程序,可以访问数据并将其写入外部存储。一切正常,直到我转到设置 - >应用程序 - >应用程序信息并通过“清除数据”按钮清除数据,然后每次调用开始返回空值。getExternalCacheDir()
我一直在运行Android 4.2.2的Nexus 7上进行开发。
我的清单如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.package"
android:versionCode="5"
android:versionName="1.3"
xmlns:tools="http://schemas.android.com/tools">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
...
不起作用的代码段:
Log.d(TAG, "getExternalStorageState() = " + Environment.getExternalStorageState());
Log.d(TAG, "getExternalCacheDir() = " + c.getExternalCacheDir());
Log.d(TAG, "getExternalFilesDir(null) = " + c.getExternalFilesDir(null));
Log.d(TAG, "getExternalFilesDir(Environment.DIRECTORY_MOVIES) = " + c.getExternalFilesDir(Environment.DIRECTORY_MOVIES));
安装并执行应用程序后的 LogCat:
05-15 11:26:45.948: DEBUG/HelperUtils(5541): getExternalStorageState() = mounted
05-15 11:26:45.948: DEBUG/HelperUtils(5541): getExternalCacheDir() = /storage/emulated/0/Android/data/com.example.package/cache
05-15 11:26:45.948: DEBUG/HelperUtils(5541): getExternalFilesDir(null) = /storage/emulated/0/Android/data/com.example.package/files
05-15 11:26:45.948: DEBUG/HelperUtils(5541): getExternalFilesDir(Environment.DIRECTORY_MOVIES) = /storage/emulated/0/Android/data/com.example.package/files/Movies
清除应用程序信息设置中的数据后,LogCat:
05-15 11:27:57.848: DEBUG/HelperUtils(5859): getExternalStorageState() = mounted
05-15 11:27:57.848: WARN/ContextImpl(5859): Unable to create external cache directory
05-15 11:27:57.848: DEBUG/HelperUtils(5859): getExternalCacheDir() = null
05-15 11:27:57.848: WARN/ContextImpl(5859): Unable to create external files directory
05-15 11:27:57.848: DEBUG/HelperUtils(5859): getExternalFilesDir(null) = null
05-15 11:27:57.848: WARN/ContextImpl(5859): Unable to create external files directory
05-15 11:27:57.848: DEBUG/HelperUtils(5859): getExternalFilesDir(Environment.DIRECTORY_MOVIES) = null
05-15 11:27:57.848: WARN/ContextImpl(5859): Unable to create external cache directory
清除数据并执行应用方法后,即使返回“已装载”,也会返回 null。有谁知道可能出了什么问题?getExternalCacheDir()
Environment.getExternalStorageState()
编辑
在Gjordis的帮助下,我发现“清除数据”按钮会删除整个应用程序临时目录:
storage/sdcard0/Android/data/com.example.app/cache
在Android/data
并且我无法通过或手动再次创建它(尽管我能够在 下创建其他目录)。getExternalCacheDir()
storage/sdcard0/Android/data/
(Android/data/com.example.app
在设备重新启动后再次创建,但这不是我正在寻找的解决方案)