From 4d942958646ad8501c48c9d3784e24246e8d684f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Mart=C3=AD?= Date: Fri, 3 Jan 2014 06:55:28 +0100 Subject: [PATCH] Switch to "apks" apk cache dir, use internal cache when external is not available --- src/org/fdroid/fdroid/AppDetails.java | 9 ++++++--- src/org/fdroid/fdroid/DB.java | 8 -------- src/org/fdroid/fdroid/FDroidApp.java | 17 ++++++++++------- src/org/fdroid/fdroid/Utils.java | 13 +++++++++++++ src/org/fdroid/fdroid/compat/ContextCompat.java | 2 +- 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java index 0082c0783..b09f724c1 100644 --- a/src/org/fdroid/fdroid/AppDetails.java +++ b/src/org/fdroid/fdroid/AppDetails.java @@ -76,6 +76,9 @@ import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; +import com.nostra13.universalimageloader.utils.StorageUtils; + +import android.os.Environment; public class AppDetails extends ListActivity { @@ -841,8 +844,8 @@ public class AppDetails extends ListActivity { public void onClick(DialogInterface dialog, int whichButton) { downloadHandler = new DownloadHandler(app.curApk, - repoaddress, DB - .getDataPath(getBaseContext())); + repoaddress, Utils + .getApkCacheDir(getBaseContext())); } }); ask_alrt.setNegativeButton(getString(R.string.no), @@ -872,7 +875,7 @@ public class AppDetails extends ListActivity { return; } downloadHandler = new DownloadHandler(app.curApk, repoaddress, - DB.getDataPath(this)); + Utils.getApkCacheDir(getBaseContext())); } private void removeApk(String id) { diff --git a/src/org/fdroid/fdroid/DB.java b/src/org/fdroid/fdroid/DB.java index 2c5e8cbaf..712a964be 100644 --- a/src/org/fdroid/fdroid/DB.java +++ b/src/org/fdroid/fdroid/DB.java @@ -619,14 +619,6 @@ public class DB { } - /** - * Get the local storage (cache) path. This will also create it if - * it doesn't exist. It can return null if it's currently unavailable. - */ - public static File getDataPath(Context ctx) { - return ContextCompat.create(ctx).getExternalCacheDir(); - } - private Context mContext; private Apk.CompatibilityChecker compatChecker = null; diff --git a/src/org/fdroid/fdroid/FDroidApp.java b/src/org/fdroid/fdroid/FDroidApp.java index f2949ae88..7523c5245 100644 --- a/src/org/fdroid/fdroid/FDroidApp.java +++ b/src/org/fdroid/fdroid/FDroidApp.java @@ -31,11 +31,13 @@ import android.util.Log; import android.content.Context; import android.content.SharedPreferences; -import com.nostra13.universalimageloader.utils.StorageUtils; +import org.fdroid.fdroid.Utils; + import com.nostra13.universalimageloader.cache.disc.impl.LimitedAgeDiscCache; import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; +import com.nostra13.universalimageloader.utils.StorageUtils; public class FDroidApp extends Application { @@ -78,14 +80,14 @@ public class FDroidApp extends Application { curTheme = Theme.valueOf(prefs.getString("theme", "dark")); if (!prefs.getBoolean("cacheDownloaded", false)) { - File local_path = DB.getDataPath(this); + File local_path = Utils.getApkCacheDir(this); // Things can be null if the SD card is not ready - we'll just // ignore that and do it next time. - if(local_path != null) { + if (local_path != null) { File[] files = local_path.listFiles(); - if(files != null) { - for(File f : files) { - if(f.getName().endsWith(".apk")) { + if (files != null) { + for (File f : files) { + if (f.getName().endsWith(".apk")) { f.delete(); } } @@ -101,7 +103,8 @@ public class FDroidApp extends Application { ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(ctx) .discCache(new LimitedAgeDiscCache( - new File(StorageUtils.getCacheDirectory(ctx), "icons"), + new File(StorageUtils.getCacheDirectory(ctx, true), + "icons"), new FileNameGenerator() { @Override public String generate(String imageUri) { diff --git a/src/org/fdroid/fdroid/Utils.java b/src/org/fdroid/fdroid/Utils.java index ba271ceaf..be13a98cd 100644 --- a/src/org/fdroid/fdroid/Utils.java +++ b/src/org/fdroid/fdroid/Utils.java @@ -26,6 +26,10 @@ import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; +import android.content.Context; + +import com.nostra13.universalimageloader.utils.StorageUtils; + public final class Utils { public static final int BUFFER_SIZE = 4096; @@ -143,4 +147,13 @@ public final class Utils { return count; } + public static File getApkCacheDir(Context context) { + File apkCacheDir = new File( + StorageUtils.getCacheDirectory(context, true), "apks"); + if (!apkCacheDir.exists()) { + apkCacheDir.mkdir(); + } + return apkCacheDir; + } + } diff --git a/src/org/fdroid/fdroid/compat/ContextCompat.java b/src/org/fdroid/fdroid/compat/ContextCompat.java index dde5c5ca3..0daeabf5d 100644 --- a/src/org/fdroid/fdroid/compat/ContextCompat.java +++ b/src/org/fdroid/fdroid/compat/ContextCompat.java @@ -39,7 +39,7 @@ class OldContextCompatImpl extends ContextCompat { public File getExternalCacheDir() { File file = new File(Environment.getExternalStorageDirectory(), "Android/data/org.fdroid.fdroid/cache"); - if(!file.exists()) + if (!file.exists()) file.mkdirs(); return file; }