1

我有一个由 android 应用程序使用的 android 系统服务(不是应用程序)。我想为此系统服务添加自定义权限,然后应用程序必须具有此权限才能访问我的服务。现在,我在 /frameworks/base/core/res/AndroidManifest.xml 中添加了一个权限,比如 com.test.testpermission。但是我还应该怎么做才能在系统服务中使用这个权限呢?

4

1 回答 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 回答