This answer borrows a lot of code from this blog post by Igor Khrupin .
Your Project > src > [com/org/whatever].[YourNameSpace].[ActivityNameHere] > [ActivityNameHere].java should look something like this for a regular PhoneGap application.
package [com/org/whatever].[YourNameSpace].[ActivityNameHere]; import org.apache.cordova.*; import android.os.Bundle; public class [ActivityNameHere] extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.loadUrl("file:///android_asset/www/index.html"); } }
What we do is change it so it looks like this. Immutable lines are commented out for clarity, but should be uncommented when implemented.
Remember to replace [com/org/whatever] , [YourNameSpace] and a few [ActivityNameHere] fill in your own values.
// package [com/org/whatever].[YourNameSpace].[ActivityNameHere]; // import org.apache.cordova.DroidGap; // import android.os.Bundle; import java.io.File; import android.util.Log; // public class [ActivityNameHere] extends DroidGap { private static [ActivityNameHere] instance; // @Override // public void onCreate(Bundle savedInstanceState) { instance = this; [ActivityNameHere].getInstance().clearApplicationData(); // super.onCreate(savedInstanceState); // super.loadUrl("file:///android_asset/www/index.html"); // } public static [ActivityNameHere] getInstance() { return instance; } public void clearApplicationData() { File cache = getCacheDir(); File appDir = new File(cache.getParent()); if (appDir.exists()) { String[] children = appDir.list(); for (String s : children) { if (!s.equals("lib")) { deleteDir(new File(appDir, s)); Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************"); } } } } public static boolean deleteDir(File dir) { if (dir != null && dir.isDirectory()) { String[] children = dir.list(); for (int i = 0; i < children.length; i++) { boolean success = deleteDir(new File(dir, children[i])); if (!success) { return false; } } } return dir.delete(); } // }
As stated in my question, I don't have Java skills, so I hacked it together from what I could find, and it looks like it works. Please edit accordingly - I think this is what should be accessible for people to effectively copy and paste when they need it, since the whole point of PhoneGap on Android is to distract the developer from Java (which, for writing, I will get into training, as soon as my current project is completed).
The code works, at least in my case. It would be nice to add -
(1) Ability to call this function from JS, these lines .
and
(2) The choice to clear the cache is only the first time the application is launched , so you can simulate an application that is "force closed."