中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Android中獲得所有存儲設備位置

發布時間:2021-05-21 16:04:28 來源:億速云 閱讀:156 作者:Leah 欄目:移動開發

怎么在Android中獲得所有存儲設備位置?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

具體代碼如下:

public static List<HomeDirBean> getAllExternalStorage(Context context) {
  List<HomeDirBean> storagePath = new ArrayList<>();
  StorageManager storageManager = (StorageManager) context.getSystemService(STORAGE_SERVICE);
  StorageVolume[] storageVolumes;
  try {
   Method getVolumeList = StorageManager.class.getDeclaredMethod("getVolumeList");
   storageVolumes = (StorageVolume[]) getVolumeList.invoke(storageManager);
   Method getVolumeState = StorageManager.class.getDeclaredMethod("getVolumeState", String.class);
   for (StorageVolume storageVolume : storageVolumes) {
    String desc = storageVolume.getDescription(context);
    Log.i(TAG, "storageVolume name--->" + desc);
    Method getPath = StorageVolume.class.getMethod("getPath");
    String path = (String) getPath.invoke(storageVolume);
    Log.i(TAG, "StoragePath--->" + path);
    //這里需要用StorageManager反射調用getVolumeState函數,而不應該用StorageVolume的getState方法,因為可能會報錯
    String state = (String) getVolumeState.invoke(storageManager, path);
    Log.i(TAG, "storageVolume State--->" + state);
    if (Environment.MEDIA_MOUNTED.equals(state)) {
     HomeDirBean bean = new HomeDirBean(path, desc);
     storagePath.add(bean);
    }
   }
  } catch (Exception e) {
   Log.e(TAG, e.getMessage());
  }
  return storagePath;
 }

這里需要注意,可能有小伙伴會問,既然StorageVolume類有getState方法,為啥還要用StorageManager反射調用getVolumeState方法,并傳入path地址,而在源碼里,StorageManager的getVolumeState的方法的實現,也是將path重新創建為StorageVolume類,然后再調用其getState方法,我們這樣做成這不是多此一舉嗎?

源碼截圖如下:

怎么在Android中獲得所有存儲設備位置

Android是什么

Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

杭锦旗| 康平县| 莱西市| 平武县| 尚志市| 巴林左旗| 临漳县| 遂宁市| 宜丰县| 泊头市| 武功县| 丹东市| 华宁县| 宝坻区| 惠安县| 双峰县| 玉屏| 西乌珠穆沁旗| 沙坪坝区| 普洱| 托克逊县| 杭锦后旗| 通河县| 蛟河市| 诏安县| 宿松县| 松阳县| 保定市| 娱乐| 江北区| 梁河县| 五指山市| 光山县| 泰顺县| 博乐市| 铜梁县| 辽宁省| 黄龙县| 苍山县| 黄陵县| 乐安县|