android sdcard信息获取

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android sdcard信息获取相关的知识,希望对你有一定的参考价值。

手机存储都有两种,一种是 手机自带的存储,称为internal storage,另外一种用户额外插入的存储,称为removable storage (也就是外置sdcard的部分).

removable storage 的路径一般是 storage/emulated/0/android/data/com.example.storagetest/files/alarm

internal storage 也有一部分称为 external (也就是内置sdcard的部分) 的,这部分的路径为  /storage/emulated/0 

 

获取内置sdcard路径方法

    通过 Context.get....dir或者 Environment.get...dir去获取

 

获取外置sdcard路径方法 

    1.String extSdcardPath = System.getenv("SECONDARY_STORAGE");

     2.通过StorageManager  来获取。

 

StorageManager mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);
        Class<?> storageVolumeClazz = null;
        try {
            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);//如果有外置sdcard,那么 sdcard1 就是外置的了。
                boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement);
                if (is_removale == removable) {
                    return path;
                }
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return null;

 

以上是关于android sdcard信息获取的主要内容,如果未能解决你的问题,请参考以下文章

Android获取所有App信息

在 android dumpsys 中获取当前可见片段的信息

如何使用 Qt API 在 android 中获取`/sdcard` 路径 [重复]

android:sharedUserId="android.uid.system" 从 SDCard 获取文件

Android - 在将位图保存到 SDCARD 以获取结果之前压缩位图

将 xml 文件从 sdcard 获取到 android 应用程序?