package com.amlogic.tzr.charismatic_yichang.Tool; import android.content.Context; import android.content.pm.PackageManager; import android.os.Environment; import android.util.Log; import java.io.File; import java.io.IOException; import static android.os.Environment.MEDIA_MOUNTED; /** * ******************************************************************************* * ********* Author : klob(kloblic@gmail.com) . * ********* Date : 2014-11-29 . * ********* Time : 11:46 . * ********* Project name : Diandi1.18 . * ********* Version : 1.0 * ********* Copyright @ 2014, klob, All Rights Reserved * ******************************************************************************* */ public class CacheUtils { private static final String TAG = "CacheUtils"; private static final String EXTERNAL_STORAGE_PERMISSION = "android.permission.WRITE_EXTERNAL_STORAGE"; /** * 获取/data/data/files目录 * * @param context * @return */ public static File getFileDirectory(Context context) { File appCacheDir = null; if (appCacheDir == null) { appCacheDir = context.getFilesDir(); } if (appCacheDir == null) { String cacheDirPath = "/data/data/" + context.getPackageName() + "/files/"; appCacheDir = new File(cacheDirPath); } return appCacheDir; } public static File getCacheDirectory(Context context, boolean preferExternal, String dirName) { File appCacheDir = null; if (preferExternal && MEDIA_MOUNTED .equals(Environment.getExternalStorageState()) && hasExternalStoragePermission(context)) { appCacheDir = getExternalCacheDir(context, dirName); } if (appCacheDir == null) { appCacheDir = context.getCacheDir(); } if (appCacheDir == null) { String cacheDirPath = "/data/data/" + context.getPackageName() + "/cache/"; appCacheDir = new File(cacheDirPath); } return appCacheDir; } public static File getExternalCacheDir(Context context, String dirName) { File dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Charismatic_yichang"), "data"); File appCacheDir2 = new File(new File(dataDir, context.getPackageName()), "cache"); File appCacheDir = new File(appCacheDir2, dirName); if (!appCacheDir.exists()) { if (!appCacheDir.mkdirs()) { Log.w(TAG, "Unable to create external cache directory"); return null; } try { new File(appCacheDir, ".nomedia").createNewFile(); } catch (IOException e) { Log.i(TAG, "Can't create \".nomedia\" file in application external cache directory"); } } return appCacheDir; } private static boolean hasExternalStoragePermission(Context context) { int perm = context.checkCallingOrSelfPermission(EXTERNAL_STORAGE_PERMISSION); return perm == PackageManager.PERMISSION_GRANTED; } }