android系統中區分UDisk和SDCard

因項目要求,需要將UDisk和SDCard掛載的名稱區分開來,系統默認是將這些可移動存儲設備的UUID作爲其掛載的目錄名稱的,如下所示:

818D-1319這些都是相應的移動存儲器的UUID,這個目錄名稱在上層APP使用時讓人會覺得很抓瘋,所以這裏通過本文的方法來修改這個掛載目錄名。

打開system/vold/PublicVolume.cpp這個文件,在doMount這個函數裏有如下一段代碼:

std::string stableName = getId();
if(!mFsUuid.empty()) {
    stableName = mFsUuid;
}

這裏就是設備可移動存儲設備的掛載名稱的,這裏失獲取相應的設備ID並判斷UUID如果不爲空則使用設備的UUID作爲stable name

所以在這裏通過判斷是UDisk還是SDCard來修改相應的stable name就可以了

我這裏通過判斷相應移動設備的major來區分是UDisk還是SDCard的,相應代碼如下

std::string stableName = "udisk";
int mj = major(mDevice);

if((mj == 179) || (mj >= 240 && mj <= 254)) {
    stableName = "external_sd";
}

爲什麼這裏要這樣判斷呢,我們來看看內核裏mmc的驅動

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章