2.Android接口调用控制,首先是root用户和system用户拥有所有的接口调用权限,然后对于其它用户使用Context以下这几个函数来实现
Context.checkCallingOrSelfPermission(String);
Context.checkCallingOrSelfUriPermission(Uri,
int
);
Context.checkCallingPermission(Permission);
Context.checkCallingUriPermission(Uri,
int
);
Context.checkPermission(String,
int
,
int
);
Context.checkUriPermission(Uri,
int
,
int
,
int
);
Context.checkUriPermission(Uri,String,String,
int
,
int
,
int
);
Context.enforceCallingOrSelfPermission(String,String);
Context.enforceCallingOrSelfUriPermission(Uri,
int
,String);
Context.enforceCallingPermission(String,String);
Context.enforceCallingUriPermission(String,String);
Context.enforcePermission(String,
int
,
int
,String);
Context.enforceUriPermission(Uri,
int
,
int
,
int
,String);
Context.enforceUriPermission(Uri,String,String,
int
,
int
,
int
,String);
|
其中check开头的,只做检查。enforce开头的,不单检查,没有权限的还会抛出异常。
这几个函数最后会调用到PKMS的checkUidPermission,该函数通过对比应用权限信息来判断该应用是否获得权限。
----------------->