gpt4 book ai didi

android - 除非删除 SEND 权限,否则不会收到 GCM 消息

转载 作者:行者123 更新时间:2023-11-29 14:50:07 25 4
gpt4 key购买 nike

为了正确实现 GCM,应根据 the official docs 为接收方指定 com.google.android.c2dm.SEND 权限:

The receiver should require the com.google.android.c2dm.SEND permission, so that only the GCM Framework can send a message to it.

但是,当我添加该权限时,收到消息时出现此错误。

W/GTalkService(25224): [DataMsgMgr] broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE cat=[com.XXX.XXX] (has extras) }

随后出现此错误:

W/ActivityManager(283): Permission Denial: broadcasting Intent { act=com.google.android.c2dm.intent.RECEIVE cat=[com.XXX.XXX] flg=0x10 (has extras) } from com.google.android.syncadapters.contacts requires com.google.android.c2dm.SEND due to receiver com.XXX.XXX/com.XXX.XXX.GcmBroadcastReceiver

如果我只删除该权限,而不更改任何其他内容,接收方将正常工作,我可以处理该消息。

这是 AndroidManifest.xml 中的接收器定义

<receiver
android:name="com.XXX.XXXX.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />

<category android:name="com.XXX.XXX" />
</intent-filter>
</receiver>

我在测试期间使用调试证书,以防相关。

最佳答案

尝试使用 com.google.android.c2dm.permission.SEND 而不是 com.google.android.c2dm.SEND,例如:

<receiver
android:name="GCMBroadcastReceiverCompat"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category android:name="com.commonsware.android.gcm.client"/>
</intent-filter>
</receiver>

(来自 this sample app)

关于android - 除非删除 SEND 权限,否则不会收到 GCM 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21163769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com