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 に答える