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

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -