我想学习如何创建主应用程序及其关联的关键应用程序。问题是我不知道如何使关键应用程序将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可以接收该意图,还可以确认两个应用程序使用相同的签名。

我在这里想念什么?

最佳答案

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

同样,AFAIK,sendBroadcast()的第二个参数将要求MainApp也具有<uses-permission>mainapp.permission.CHECK_RESULT元素。如果这不是您的意图(想要使用双关语(嵌套双关语(哦,不!无限双关递归!))),我将在sendBroadcast()调用中删除第二个参数。

10-06 05:32