/**獲取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;
}
Android獲取TF卡的路徑和USB的路徑
最后編輯于 :
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關閱讀更多精彩內(nèi)容
- 內(nèi)部存儲路徑/data/data/youPackageName/,在程序安裝的時候創(chuàng)建,在卸載的時候被刪除。 1....
- 獲取存儲卡路徑的接口大家都很熟悉,一般是通過 Environment 接口來獲取: 偶爾開發(fā)中會遇到需要獲取外置存...
- 就是利用反射原理。5.1 6.0 基本都一樣。 8.1外置Sd卡路徑 7.0 外置SD卡大小
- 最近做項目有獲取手機存儲和內(nèi)存的需求,查了各種方法都不太如人意,手機存儲倒是能正常獲取,但是獲取SD卡的時候卻總是...