Android的Process
類包含了以下定義(其中包括)返回true:
/**
* Defines the root UID.
*/
public static final int ROOT_UID = 0;
/**
* Defines the UID/GID under which system code runs.
*/
public static final int SYSTEM_UID = 1000;
/**
* Defines the UID/GID under which the telephony code runs.
*/
public static final int PHONE_UID = 1001;
這些構架值對應於內核uid
S爲root
,system
,和radio
用戶。在Android中,許多系統進程都作爲這三個uid
之一運行。
NotificationManagerService使用isUidSystem()
來檢查調用進程是否屬於其中一個用戶,如果是,請設置布爾型isSystemNotification
(如果包名以android.*
開頭,它也會變爲true)。
注意isSystemUid
不直接比較上述值主叫uid
,但首先運行它通過UserHandle.getAppId()
,這需要內核值和器官功能障礙綜合徵它與UserHandle.PER_USER_RANGE
,通常定義爲100000(即,uid % PER_USER_RANGE
)。這最終成爲內核uid
的最後五位數字,其中前兩個數字對應於多用戶設備上的userId
。
所以uid
和appId
將爲0對於運行作爲根用戶進程和應用程序,並且將isSystemUid()
在這種情況下返回true
。只要uid來自作爲system
或radio
用戶運行的呼叫者,它也會返回true。