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;
        }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容