因項目要求,需要將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的驅動