Android获取TF卡的路径和USB的路径

/**获取TF卡路径*/
        public static String getTFDir(Context context) {
            String sdcardDir = null;
            StorageManager storageManager = (StorageManager) context.getApplicationContext().getSystemService(Context.STORAGE_SERVICE);
            Class<?> volumeInfoClazz = null;
            Class<?> diskInfoClazz = null;
            try {
                diskInfoClazz = Class.forName("android.os.storage.DiskInfo");
                Method isSd = diskInfoClazz.getMethod("isSd");
                volumeInfoClazz = Class.forName("android.os.storage.VolumeInfo");
                Method getType = volumeInfoClazz.getMethod("getType");
                Method getDisk = volumeInfoClazz.getMethod("getDisk");
                Field path = volumeInfoClazz.getDeclaredField("path");
                Method getVolumes = storageManager.getClass().getMethod("getVolumes");
                List<Class<?>> result = (List<Class<?>>) getVolumes.invoke(storageManager);
                for (int i = 0; i < result.size(); i++) {
                    Object volumeInfo = result.get(i);
                    if ((Integer) getType.invoke(volumeInfo) == 0) {
                        Object disk = getDisk.invoke(volumeInfo);
                        if (disk != null) {
                            if ((Boolean) isSd.invoke(disk)) {
                                sdcardDir = (String) path.get(volumeInfo);
                                break;
                            }
                        }
                    }
                }
                if (sdcardDir == null) {
                    Log.w(TAG, "sdcardDir null");
                    return null;
                } else {
                    Log.i(TAG, "sdcardDir " + sdcardDir + File.separator);
                    return sdcardDir + File.separator;
                }
            } catch (Exception e) {
                Log.i(TAG, "sdcardDir e " + e.getMessage());
                e.printStackTrace();
            }
            Log.w(TAG, "sdcardDir null");
            return null;
        }

        /**获取USB的路径*/
        public static String getUsbDir(Context context) {
            String sdcardDir = null;
            StorageManager storageManager = (StorageManager) context.getApplicationContext().getSystemService(Context.STORAGE_SERVICE);
            Class<?> volumeInfoClazz = null;
            Class<?> diskInfoClazz = null;
            try {
                diskInfoClazz = Class.forName("android.os.storage.DiskInfo");
                Method isUsb = diskInfoClazz.getMethod("isUsb");
                volumeInfoClazz = Class.forName("android.os.storage.VolumeInfo");
                Method getType = volumeInfoClazz.getMethod("getType");
                Method getDisk = volumeInfoClazz.getMethod("getDisk");
                Field path = volumeInfoClazz.getDeclaredField("path");
                Method getVolumes = storageManager.getClass().getMethod("getVolumes");
                List<Class<?>> result = (List<Class<?>>) getVolumes.invoke(storageManager);
                for (int i = 0; i < result.size(); i++) {
                    Object volumeInfo = result.get(i);
                    Log.w(TAG, "disk path " + path.get(volumeInfo));
                    if ((Integer) getType.invoke(volumeInfo) == 0) {
                        Object disk = getDisk.invoke(volumeInfo);
                        Log.w(TAG, "is usb " + isUsb.invoke(disk));
                        if (disk != null) {
                            if ((Boolean) isUsb.invoke(disk)) {
                                sdcardDir = (String) path.get(volumeInfo);
                                break;
                            }
                        }
                    }
                }
                if (sdcardDir == null) {
                    Log.w(TAG, "usbpath null");
                    return null;
                } else {
                    Log.i(TAG, "usbpath " + sdcardDir + File.separator);
                    return sdcardDir + File.separator;
                }
            } catch (Exception e) {
                Log.i(TAG, "usbpath e " + e.getMessage());
                e.printStackTrace();
            }
            Log.w(TAG, "usbpath null");
            return null;
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容