如何正确获取安卓外置SD卡的路径

简介: 如何正确获取安卓外置SD卡的路径

有时获取安卓的SD卡,实际上是内置的。这个时候,怎样获取外置的路径呢?经常搜索,吾找到一个办法,共享给大家:


 

/**
     * 获取外置卡(可拆卸的)的目录。
     * Environment.getExternalStorageDirectory()获取的目录,有可能是内置卡的。
     * 在高版本上,能访问的外置卡目录只能是/Android/data/{package}。
     */
    public String getAppRootOfSdCardRemovable(Context context)
    {
        if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
        {
            return null;
        }
        /**
         * 这一句取的还是内置卡的目录。
         * /storage/emulated/0/Android/data/net.quantum6.q6telcom/cache
         * 神奇的是,加上这一句,这个可移动卡就能访问了。
         * 猜测是相当于执行了某种初始化动作。
         */
        StorageManager mStorageManager = (StorageManager) context.getSystemService(Context.STORAGE_SERVICE);
        try
        {
            Class<?> storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");
            Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");
            Method getPath       = storageVolumeClazz.getMethod("getPath");
            Method isRemovable   = storageVolumeClazz.getMethod("isRemovable");
            Object result        = getVolumeList.invoke(mStorageManager);
            final int length     = Array.getLength(result);
            for (int i = 0; i < length; i++)
            {
                Object storageVolumeElement = Array.get(result, i);
                String path = (String) getPath.invoke(storageVolumeElement);
                if ((Boolean) isRemovable.invoke(storageVolumeElement))
                {
                  return path;
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return null;
    }


 希望能给需要的朋友带来帮助。


 祝大家健康顺利。

目录
相关文章
|
7月前
|
开发工具 Android开发
Mac 安卓(Android) 配置adb路径
Mac 安卓(Android) 配置adb路径
213 0
|
11月前
|
Android开发 Kotlin
Android 获取当前的类名,包名,路径等
在做项目时,无论为了功能还是调试,很多时候都需要获取到当前类的类名,包名,路径等等。 在这里总结一下,以便总结和以后需要的时候更快的解决问题。
|
4天前
|
存储 缓存 安全
Android系统 应用存储路径与权限
Android系统 应用存储路径与权限
6 0
Android系统 应用存储路径与权限
|
8月前
|
SQL 数据库 Android开发
Android 访问系统相册选中图片,并返回该图片的路径
Android 访问系统相册选中图片,并返回该图片的路径
100 0
|
11月前
|
Android开发
Android获取相册中图片的路径 4.4版本前后的变化
Android获取相册中图片的路径 4.4版本前后的变化
150 0
|
Java Android开发
android 修改新增jar 路径
android 修改新增jar 路径
337 0
|
设计模式 Dart 算法
Android复习路径以及复习资料整理
Android复习路径以及复习资料整理
|
Android开发
安卓通过路径生成zip文件
安卓通过路径生成zip文件
166 0
|
Android开发
android手机操作SD的使用方法
android手机操作SD的使用方法
66 0