android - getExternalCacheDir() returns null after clearing data -
i have simple app access , writes data external storage. works fine until go settings -> apps -> app info , clear data via "clear data" button, every call getexternalcachedir() starts returning null.
i have been developing on nexus 7 running android 4.2.2.
my manifest looks like:
<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 ... code snippet not work:
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 after app installed , executed:
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 after clearing data in app info settings:
05-15 11:27:57.848: debug/helperutils(5859): getexternalstoragestate() = mounted 05-15 11:27:57.848: warn/contextimpl(5859): unable 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 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 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 create external cache directory after clearing data , executing app getexternalcachedir() method returns null though environment.getexternalstoragestate() returns "mounted". know possibly wrong?
edit
with gjordis have found out clear data button removes whole application temporary directory:
storage/sdcard0/android/data/com.example.app/cache in android/data
and not able create again via getexternalcachedir() or manually (though able create other directories under storage/sdcard0/android/data/).
(android/data/com.example.app created again after device rebooted, not solution looking for)
i have encountered , solved exact problem. clicking clear data button causes android stop app running , delete entire application-specific folder "mnt/sdcard/android/data/your.package.name". however, had separate process started runtime.getruntime().exec() still running , writing folder. caused folder stuck in locked state , caused same symptom described when app called getexternalcachedir(). running adb shell , ls within /mnt/sdcard/android/data folder showed folder locked process. running ps showed other process still running.
the solution kill other process still writing application's application-specific folder before calling getexternalcachedir().
Comments
Post a Comment