如何在Android框架中使用自定义权限?

时间:2012-05-10 02:15:41

标签: android android-ndk

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

1 个答案:

答案 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;
            }