您好,登錄后才能下訂單哦!
在owner切換成guest用戶時,發現無法獲取到OP_RECORD_AUDIO = 27權限
在創建audiosource時,傳入的包名
new AudioSource(...
String16("media")/* mOpPackageName */,
media UID 1013 屬于系統進程,得到userhandle 0
而在owner 切換到 guest 用戶時,audioservice 會將userhandle 0 disallow record audio
UserManagerService.getInstance().setSystemControlledUserRestriction(
UserManager.DISALLOW_RECORD_AUDIO, true, userId);//(userId = 0)
導致guest用戶無法獲取到record audio 權限
根據uid獲取userhandle 邏輯
core/java/android/os/UserHandle.java
public static @UserIdInt int getUserId(int uid) {
if (MU_ENABLED) {
return uid / PER_USER_RANGE;
} else {
return UserHandle.USER_SYSTEM;
}
}
M 上沒有切換問題,是因為
miracast 與 audio 運行在同一個進程中,在serviceutility.cpp中
if (getpid_cached == IPCThreadState::self()->getCallingPid()) return true;
會直接返回
而N 上面因為media harden原因,miracast與audio運行在不同進程中,該處無法直接返回,繼續進行ops權限檢查
ServiceUtility中放開對aid_media限制,無法通過CTS驗證
附錄 android 多用戶
http://blog.csdn.net/zhanglianyu00/article/details/50253187
3.Android多用戶
Android4.2開始支持多用戶。Linux的uid/gid多用戶體系已經被用在App管理上了,所以android重新開發了一套多用戶體系,在UserManagerService中管理,PackageManagerService和ActivityManagerService中也有相關邏輯。Android的多用戶可以做到不同用戶的應用的物理文件級(數據)的區分,以實現不同用戶有不同的壁紙、密碼,以及不同的應用等。本文不展開多用戶的機制,只集中于uid。
先看一下在多用戶下,應用的uid怎么變化。
在一個有兩個用戶(用戶id分別為0和10)的安卓設備上,在用戶10下安裝一個應用,此時,在0下是看不到這個應用的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。