我有一个由 android 应用程序使用的 android 系统服务(不是应用程序)。我想为此系统服务添加自定义权限,然后应用程序必须具有此权限才能访问我的服务。现在,我在 /frameworks/base/core/res/AndroidManifest.xml 中添加了一个权限,比如 com.test.testpermission。但是我还应该怎么做才能在系统服务中使用这个权限呢?
问问题
1573 次
1 回答
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;
}
于 2012-05-10T04:50:55.993 回答