日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 使用反射调用StorageManager中 Hide方法getVolumeList、getVolumeState

發(fā)布時間:2024/8/1 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 使用反射调用StorageManager中 Hide方法getVolumeList、getVolumeState 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Environment.getExternalStorageDirectory()不可用來判斷內(nèi)、外置存儲

判斷Android系統(tǒng)是內(nèi)置還是外置存儲,使用Environment.getExternalStorageDirectory()
接口是不能判斷出來的,因?yàn)橛械臋C(jī)器上該方法返回的是內(nèi)置存儲路徑。

使用android.os.storage.StorageManager的getVolumeList方法

getVolumeList方法源碼如下:

Returns list of all mountable volumes. Hide: 568 569 public StorageVolume[] More ...getVolumeList() { 570 if (mMountService == null) return new StorageVolume[0]; 571 try { 572 Parcelable[] list = mMountService.getVolumeList(); 573 if (list == null) return new StorageVolume[0]; 574 int length = list.length; 575 StorageVolume[] result = new StorageVolume[length]; 576 for (int i = 0; i < length; i++) { 577 result[i] = (StorageVolume)list[i]; 578 } 579 return result; 580 } catch (RemoteException e) { 581 Log.e(TAG, "Failed to get volume list", e); 582 return null; 583 } 584 }

使用反射調(diào)用getVolumeList()

從getVolumeList源碼可知,該方法為Hide方法,對外不可見,所以需要使用反射調(diào)用。
反射調(diào)用代碼

public static StorageVolume[] getVolumeList(StorageManager storageManager){try {Class clz = StorageManager.class;Method getVolumeList = clz.getMethod("getVolumeList", null);StorageVolume[] result = (StorageVolume[]) getVolumeList.invoke(storageManager, null);return result;} catch (Exception e) {e.printStackTrace();}return null;}

使用反射調(diào)用getVolumeState()

getVolumeState()源碼如下:

Gets the state of a volume via its mountpoint. Hide: 554 555 public String More ...getVolumeState(String mountPoint) { 556 if (mMountService == null) return Environment.MEDIA_REMOVED; 557 try { 558 return mMountService.getVolumeState(mountPoint); 559 } catch (RemoteException e) { 560 Log.e(TAG, "Failed to get volume state", e); 561 return null; 562 } 563 }

反射調(diào)用代碼

public static String getVolumeState(StorageManager storageManager, String path){String result = "";if(null == storageManager || TextUtils.isEmpty(path)){return result;}try {Class clz = StorageManager.class;Method getVolumeList = clz.getMethod("getVolumeState", String.class);result = (String) getVolumeList.invoke(storageManager, path);} catch (Exception e) {e.printStackTrace();}return result;}

StorageVolume這個類中提供了一個isRemovable()接口,可以移除的就是外置存儲,不可移除的是內(nèi)置存儲。

總結(jié)

以上是生活随笔為你收集整理的Android 使用反射调用StorageManager中 Hide方法getVolumeList、getVolumeState的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 丰满少妇影院 | 国产精品1页 | 制服丝袜av电影 | 亚洲欧美日韩在线一区二区 | 国产精品96 | 狠狠爱夜夜操 | 亚洲最大的成人网站 | 成年人在线视频 | 中文字幕亚洲一区二区三区五十路 | 姑娘第5集高清在线观看 | 日韩第一页在线观看 | 亚洲国产午夜 | 久久久久久久久久久久久女过产乱 | 色呦呦国产精品 | 欧美精品乱人伦久久久久久 | 国产二区自拍 | 亚洲一区二区国产精品 | 成人精品一区二区 | 免费观看日韩毛片 | 91国产中文字幕 | 少妇一夜三次一区二区 | 午夜视频一区二区 | 亚洲性免费 | 亚洲中文字幕无码av永久 | 亚洲精选久久久 | 葵司有码中文字幕二三区 | 久久国产网站 | 中文字幕av免费 | 婷婷亚洲五月色综合 | 性欧美又大又长又硬 | 免费无码av片在线观看 | 日韩中文字幕视频 | 成人91在线 | 日日骚av一区二区 | 国产精品日韩一区二区 | 中国老熟妇自拍hd发布 | 国产做受网站 | 一区二区激情视频 | 亚洲欧美视频在线播放 | 国产91在线免费观看 | 一区二区高潮 | 日本一区二区高清视频 | av永久免费在线观看 | 一级黄片毛片 | 日韩高清av在线 | 国产亚洲精品久久久 | 国产黄色大片免费看 | 性欧美一区 | 欧美男同又粗又长又大 | 中文无码日韩欧 | 特级丰满少妇一级aaaa爱毛片 | 中文字幕日韩欧美在线 | 三级不卡视频 | 男女污污网站 | 98自拍视频| 国产一区91精品张津瑜 | 日韩激情网站 | 成人v精品蜜桃久一区 | 日韩制服诱惑 | 亚洲视频在线播放 | 一级做a爰片久久毛片潮喷 天天透天天干 | 午夜久久久精品 | 色视频在线免费观看 | 香蕉网站在线 | 黄色一级视频片 | 免费中文字幕在线观看 | 红桃视频成人在线 | 精品国产乱码久久久久久牛牛 | 亚洲理论片在线观看 | 伊人精品久久 | 免费成人深夜夜国外 | 青草视频免费观看 | 黄色三级在线观看 | 亚洲色综合 | 香蕉久久精品日日躁夜夜躁 | 伊人久久99 | 亚洲欧美日韩精品在线 | 亚洲一区二区久久久 | 北京富婆泄欲对白 | 日韩人妻无码一区二区三区 | 色综合久久88色综合天天6 | 六月丁香激情 | 激情一区二区三区 | 九九热精| 日本成人动漫在线观看 | 国产精品美女久久久网av | 色狠久| 色小妹av| 国产一级片免费视频 | 性久久久久久久久 | 97人人爽人人爽人人爽人人爽 | 片多多在线观看 | 国产精品成人免费精品自在线观看 | 亚洲性av| 超碰超碰超碰超碰超碰 | 捆绑束缚调教 | 精品人妻一区二区三区四区 | 午夜国产精品视频 | 亚洲a v网站|