zoukankan      html  css  js  c++  java
  • android数据存储之外部存储(External Storage)

    Android设备支持外部存储器,可以是可移动存储器(如SD卡),也可以是内置在设备中的外部存储器(不可移动)。

    如果希望外部存储器上的文件只对本程序有用,并且当程序被卸载时目录中的文件自动被系统删除,可以使用如下目录

    /Android/data/<package_name>/

    核心代码:

      /**
         * 得到缓存的目录(apk卸载时系统自动删除该packagename目录)
         * @param context
         * @return
         */
        public static File getCacheDirectory(Context context) {
            File appCacheDir = null;
            if (MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) && hasExternalStoragePermission(context)) {
                appCacheDir = getExternalCacheDir(context);
            }
            if (appCacheDir == null) {

        //返回  /data/data/<package_name>/
                appCacheDir = context.getCacheDir();
            }
            if (appCacheDir == null) {
                L.w("Can't define system cache directory! The app should be re-installed.");
            }
            return appCacheDir;
        }

      /**
         * 返回/Android/data/<package_name>/file,若file目录不存在则创建
         * @param context
         * @return
         */
        private static File getExternalCacheDir(Context context) {
            File dataDir = new File(new File(Environment.getExternalStorageDirectory(), "Android"), "data");
            File appCacheDir = new File(new File(dataDir, context.getPackageName()), "file");
            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;
        }

      /**
         * 权限判断
         * @param context
         * @return
         */
        private static boolean hasExternalStoragePermission(Context context) {
            int perm = context.checkCallingOrSelfPermission(EXTERNAL_STORAGE_PERMISSION);
            return perm == PackageManager.PERMISSION_GRANTED;
        }

  • 相关阅读:
    第一节 软件测试概述(2)
    第一节 软件测试概述(1)
    Sql语句,查询效率
    Js cdn 学习
    Java内部类详解
    UML用例图
    UML类图几种关系的总结
    JFinal框架_定时触发程序
    利用EXCEL函数LINEST进行统计学中的回归分析
    Windows 10 64 Bit 编译安装 PyLucene 8.3.0
  • 原文地址:https://www.cnblogs.com/bravestarrhu/p/3610922.html
Copyright © 2011-2022 走看看