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。