android中通过java的反射机制获取U盘名称
生活随笔
收集整理的這篇文章主要介紹了
android中通过java的反射机制获取U盘名称
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在android項目中實現Windos一樣的U盤效果,需監聽兩個U盤的插入和拔出狀態,并屏蔽本地存儲,使用U盤來下載和上傳文件;
在編輯代碼中碰到一個問題:無法獲取插入U盤的名稱,于是通過java的反射機制來調用源碼的API獲取,方法如下:
在上面的方法中
volumeInfoClazz = Class.forName("android.os.storage.StorageVolume");
首先通過反射獲取StorageVolume類
然后獲取類中的**getVolumeLis**t方法
getPath = volumeInfoClazz.getMethod("getPath");getUserLabel = volumeInfoClazz.getMethod("getUserLabel");獲取U盤路徑和U盤真實名稱的方法
volumes = (Object[])getVolumes.invoke(mStorageManager);獲取數組對象
String path = (String) getPath.invoke(vol);獲取路徑
android中U盤的閃存路徑為storage/udisk0和storage/udisk1所以在代碼中取出包括關鍵字的對象對應的userLabel也就是U盤名稱
注意事項:
使用的SDK源碼版本不同,會導致方法名不相同,上述方法中使用的是定制源碼,直接復制代碼會導致報錯,使用改方法時,去對應的android\os目錄下找到相應的類,和其中的方法,然后在代碼中通過反射使用。
總結
以上是生活随笔為你收集整理的android中通过java的反射机制获取U盘名称的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决eclipse的 Invalid p
- 下一篇: [激光器原理与应用-3]:激光器的国外品