如何使用签名保护权限?

时间:2012-09-04 16:57:24

标签: android android-permissions

我想学习如何创建主应用程序及其关联的密钥应用程序。问题是我不知道如何将关键应用程序广播mainapp.action.VALID转换为主应用程序。

@MainApp

<permission
        android:name="mainapp.permission.CHECK_RESULT"
        android:protectionLevel="signature" />

<application>

    <receiver
        android:name=".ResponseReceiver"
        android:permission="mainapp.permission.CHECK_RESULT" >
        <intent-filter>
            <action android:name="mainapp.action.CHECK_OK" />
        </intent-filter>
    </receiver>

@KeyApp

Intent i = new Intent();
i.setAction("mainapp.action.CHECK_OK");
context.sendBroadcast(i, "mainapp.permission.CHECK_RESULT");

结果是,意图被拒绝:它需要mainapp.permission.CHECK_RESULT权限。但是如果我删除了权限,mainapp.receiver.ResponseReceiver可以收到意图,也可以确认两个应用程序都使用相同的签名。

我在这里想念什么?

1 个答案:

答案 0 :(得分:2)

正如nandeesh所指出的,您需要KeyApp中相应的<uses-permission>元素,并说KeyApp请求mainapp.permission.CHECK_RESULT权限。

此外,AFAIK,您sendBroadcast()的第二个参数将要求MainApp还拥有<uses-permission>的{​​{1}}元素。如果这不是你的意图(双关语意图(嵌套双关语意图(哦,不!无限双关语递归!))),我会在mainapp.permission.CHECK_RESULT调用中删除第二个参数。