private static File getCacheDirectory(Context context,
boolean preferExternal) {
File appCacheDir = null;
if (preferExternal&& Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
&& hasExternalStoragePermission(context)) {
appCacheDir = getExternalCacheDir(context);
}
if (appCacheDir == null) {
appCacheDir = context.getCacheDir();
}
if (appCacheDir == null) {
//获取手机内部存储的空间;
String cacheDirPath = "/data/data/" + context.getPackageName()
+ "/cache/";
// L.w("Can't define system cache directory! '%s' will be used.",
// cacheDirPath);
appCacheDir = new File(cacheDirPath);
}
return appCacheDir;
}
//定义访问外部存储的权限;
private static final String EXTERNAL_STORAGE_PERMISSION = "android.permission.WRITE_EXTERNAL_STORAGE";
//检查是否获取了访问外部存储的权限;
private static boolean hasExternalStoragePermission(Context context) {
int perm = context.checkCallingOrSelfPermission(EXTERNAL_STORAGE_PERMISSION);
return perm == PackageManager.PERMISSION_GRANTED;
}
//
private static File getExternalCacheDir(Context context) {
File dataDir = new File(new File(
Environment.getExternalStorageDirectory(),
context.getPackageName()), "data");
File appCacheDir = new File(new File(dataDir, context.getPackageName()), "cache");
if (!appCacheDir.exists()) {
if (!appCacheDir.mkdirs()) {
// L.w("Unable to create external cache directory");
return null;
}
try {
new File(appCacheDir, ".nomedia").createNewFile();
} catch (IOException e) {
// L.i("Can't create \".nomedia\" file in application external cache directory");
}
}
return appCacheDir;
}
【代码总结】Android开发:获取系统的缓存地址
最新推荐文章于 2021-05-30 02:48:52 发布