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;
        }

  • 相关阅读:
    1.centos install jdk
    SSH命令行上传/下载文件
    关于CXF的FrontEnd和数据绑定方案
    Eclipse反编译工具Jad及插件JadClipse配置
    Eclipse背景颜色修改
    Java IDE-常见Java开发工具的特点比较
    myBatis应用
    [Java EE] LInux环境下Eclipse + Tomcat + MySQL 配置J2EE开发环境的方法
    Eclipse EMT Papyrus建模和MoDisco反向工程
    (转载)C# 正则表达式
  • 原文地址:https://www.cnblogs.com/bravestarrhu/p/3610922.html
Copyright © 2011-2022 走看看