Android广播具有权限,protectionLevel危险

时间:2015-11-29 13:11:57

标签: android android-intent android-broadcast android-permissions

我试图通过意图(保护级别:危险)将信息从应用程序A发送到应用程序B.我不能使用其他保护级别,因为这两个应用程序将使用不同的证书。

为此,我创建了两个示例应用程序。但我无法向其他应用程序发送获得许可的意图。

adb-logcat失败后:

  

W / BroadcastQueue:权限拒绝:接收Intent {   act = ch.christofbuechi.android.mybroadcastRequest flg = 0x10(有额外的)   } ch.christofbuechi.httpexampleb / .UserCheckReceiverRequest需要   ch.christofbuechi.httpB_perm由于发件人   ch.christofbuechi.httpexamplea

发件人有以下属性:

<uses-permission android:name="ch.christofbuechi.httpB_perm"/>

在清单中

private void checkUserHA654321() {
    Log.d("BroadcastQueue", "send: checkUserHA654321");
    Intent intent = new Intent();
    intent.setAction("ch.christofbuechi.android.mybroadcastRequest");
    intent.putExtra("User", "HA654321");
    sendBroadcast(intent, "ch.christofbuechi.httpB_perm");
}

作为活动内部的行动

Receiver具有以下属性:

<permission android:name="ch.christofbuechi.httpB_perm" android:protectionLevel="dangerous"></permission>

<receiver android:name=".UserCheckReceiverRequest"
        android:permission="ch.christofbuechi.httpB_perm">
        <intent-filter>
            <action android:name="ch.christofbuechi.android.mybroadcastRequest" />
        </intent-filter>
    </receiver>

在清单中

其实我不知道我的问题在哪里。我已经研究了关于这个主题的其他stackoverflow帖子。也许你也可以帮助我? THX

可以从这里完整地获取代码: (使样品尽可能简单) https://github.com/ChristofBuechi/appswitch_sample

1 个答案:

答案 0 :(得分:2)

  

我正在尝试通过意图(protectionlevel:dangerous)将信息从应用程序A发送到应用程序B.

仅当应用程序B 100%保证在应用程序A之前安装时才会起作用。

  

adb-logcat失败后:

这表明应用程序B(接收方)是在应用程序A(发送方)之后安装的。

<uses-permission>会忽略Android不知道的权限名称。您必须先拥有<permission>元素才能定义名称。您可能想要让两个应用定义相同的<permission>,但这在Android 5.0+上不起作用,因为拥有多个应用(由不同的签名密钥签名)定义相同的权限会打开一些相当令人讨厌的安全性问题。