我有Android系统服务(不是应用程序),由Android应用程序使用。我想为此系统服务添加自定义权限,然后应用程序必须具有此权限才能访问我的服务。 现在,我在/frameworks/base/core/res/AndroidManifest.xml中添加了一个permision,比如com.test.testpermission。 但是,我还应该怎么做才能在系统服务中使用此权限?
答案 0 :(得分:0)
在服务代码中,您需要将权限检查添加到服务公开的所有公共API中。要检查权限,您可以使用此方法:
private boolean checkPermission() {
if (getContext().checkCallingOrSelfPermission("com.test.testpermission") == PackageManager.PERMISSION_GRANTED) {
return true;
}
return false;
}
因此,客户端应用必须在其清单中列出您的权限。
我自己从未尝试过,但我可以看到TelephonyRegistry服务使用它。例如。
对于本机代码,我可以在相机服务中看到这一点:
if (!checkCallingPermission(
String16("android.permission.CAMERA"))) {
const int uid = getCallingUid();
LOGE("Permission Denial: "
"can't use the camera pid=%d, uid=%d", pid, uid);
return PERMISSION_DENIED;
}