【问题标题】:Android GCM Send Permission works without uses-permissionAndroid GCM 发送权限无需使用权限即可工作
【发布时间】:2014-12-02 13:39:32
【问题描述】:

在此处查看示例清单 - https://developer.android.com/google/gcm/client.html

我的问题是,当没有uses-permissionpermission 标记与相同的字符串一起使用时,接收者如何接收具有android:permission="com.google.android.c2dm.permission.SEND" 权限的广播?

-- 解决了--

注意:不要忘记阅读所选答案中的 cmets。

【问题讨论】:

    标签: android android-intent google-cloud-messaging android-permissions


    【解决方案1】:

    您的应用是在获得许可的情况下为自己辩护的应用。

    发件人——在这种情况下,是 Google Play 服务中处理 GCM 连接的东西——是需要通过<uses-permission> 或同等方式持有权限的人。

    <permission> 本身是由 Google Play 服务定义的,大概是给定了权限名称。

    【讨论】:

    • 所以你说的是谷歌播放服务(发件人)应用程序包含uses-permission 以及定义权限字符串的permission 标签。我所要做的就是在接收者标签中使用它,然后我就可以从发送者应用程序接收广播。所以为了测试这一点,我创建了 2 个应用程序 A 和 B。A 有一个广播接收器。以下是两者的清单(和代码)的样子 - pastie.org/private/hqoapkl7wiuksjmpdo0dga 我提到了那里的问题,即 A 没有收到 B 的广播。我做错了什么或无法理解?
    • @user1437328:该代码中没有任何与 GCM 相关的内容。如果你想让这个工作,去掉sendBroadcast()的第二个参数,并确保B在A之前安装。
    • 我同意这与 GCM 无关,但是为了测试类似的情况,我写了自己的文章来理解。我会照你说的做,看看广播是否有效。
    • 好的,这似乎可行(尽管我会测试更多)。似乎关键是从sendBroadcast() 中删除第二个参数。这有点奇怪,因为Security 指南提到了第二个参数的用法。 thread 也是如此,这是一个稍微不同的示例(或者可能不是唯一的区别是我将uses-permission 标签放在发送方应用程序清单(B)而不是接收方应用程序清单(A)中。知道为什么第二个必须删除参数?
    • @user1437328:“似乎关键是要从 sendBroadcast() 中删除第二个参数”——这些是针对不同角色的。在 GCM 场景中,receiver 正在保护自己免受流氓 senders 的侵害。在两个参数sendBroadcast() 场景中,sender 正在保护自己免受流氓 receivers 的攻击。
    猜你喜欢
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2016-10-09
    • 1970-01-01
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多