1. 外置SD卡的一些问题

1.1 关于外置SD卡上的读写路径

Android 4.4及以上版本,应用的外置SD卡读写路径被限定在固定路径上(外置SD卡根路径/Android/data/包名/files)。

Android4.4以下版本,申请了外置SD卡读写权限的应用在整个外置SD卡上都有读写权限。

1.2 关于外置SD卡路径

另外Android没有提供获取外置SD卡路径的API(getExternalStorageDirectory()获取的实际是内置SD卡路径)。

2. 获取应用在外置SD卡读写根路径

Android 4.4以下版本,获取的应该是外置SD卡的根目录(类似/storage/sdcard1)。在Android 4.4及以上版本,获取的是应用在SD卡上的限定目录(外置SD卡根路径/Android/data/包名/files/file)

代码如下:

    public static String getExternalSDPath(Context aContext) {        String root = null;        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {            root = getExternalSDPathKITKAT(aContext);            File f = new File(root);            if (!f.exists()) {                try {                    f.mkdirs();                } catch (Exception e) {                    e.printStackTrace();                }                if (!f.exists()) {                    root = null;                }            }        } else {            root = getExternalSDCardPath(aContext);        }        return root;    }    // Android 4.4及以上版本,获取软件在外置SD卡上的保存路径    public static String getExternalSDPathKITKAT(Context aContext) {        String rootPath = getStoragePath(aContext, true);        if (TextUtils.isEmpty(rootPath)) {            return null;        }        File f = new File(rootPath, "Android/data/" + aContext.getPackageName() + "/files/file");        String fpath = f.getAbsolutePath();        return fpath;    }    // Android 4.4 以下版本获取外置SD卡根目录    public static String getExternalSDCardPath(Context aContext) {        HashSet paths = getExternalMounts();        File defaultPathFile = aContext.getExternalFilesDir(null);        String defaultPath;        if (defaultPathFile == null) {            return null;        } else {            defaultPath = defaultPathFile.getAbsolutePath();        }        String prefered = null;        for (Iterator it = paths.iterator(); it.hasNext();) {            String path = (String) (it.next());            if (prefered == null && !defaultPath.startsWith(path)) {                prefered = path;            }        }        return prefered;    }

更多相关文章

  1. Android多点触控开发原理
  2. android 蓝牙开发
  3. Kernel.org 被黑,获取 Android(安卓)源码方法一则
  4. android 获取汉字拼音
  5. Android(安卓)操作系统 获取Root权限 原理解析
  6. Android仿人人客户端(v5.7.1)——个人主页(一)
  7. Android中获取文本宽度和高度
  8. Android中的URI 和Uri
  9. Pycharm安装PyQt5的详细教程

随机推荐

  1. Android(安卓)APP增量升级的实现方式
  2. Android(安卓)上实现微信微博上的应用语
  3. android 中获取屏幕大小
  4. android BLE开发之UUID工具类
  5. Using Google Maps in Android
  6. android分组数据适配器demo
  7. Android文件上传
  8. 升级android studio3.0遇到的问题
  9. Android监听屏幕屏幕锁屏与解锁
  10. Android标题栏(titlebar)显示进度条