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