溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

guest mode 無法record audio

發(fā)布時(shí)間:2020-07-21 04:29:16 來源:網(wǎng)絡(luò) 閱讀:1084 作者:lindt 欄目:移動(dòng)開發(fā)

在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)用的。 

向AI問一下細(xì)節(jié)

免責(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)容。

AI