C2DM:如何使用C2D_MESSAGE权限?

2023-12-27

我即将为我的应用程序实现 C2DM,但我发现文档 http://code.google.com/android/c2dm/#writing_apps关于如何编写清单有点令人困惑。

清单代码示例包含以下内容:

<!-- Only this application can receive the messages and registration result --> 
<permission android:name="com.example.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.example.myapp.permission.C2D_MESSAGE" />

解释如下:

applicationPackage + ".permission.C2D_MESSAGE 阻止其他应用程序注册和接收该应用程序的消息。

但这到底是如何运作的呢?据我了解,这声明了一个权限,然后为我的应用程序获取该权限。但该许可到底是在哪里执行的呢?

给出的注册代码是:

Intent registrationIntent = new Intent("com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate
registrationIntent.putExtra("sender", emailOfSender);
startService(registrationIntent);

接收registrationIntent的Service如何知道要检查什么权限?据我了解(如果我在这里错了,请纠正我),在声明权限时,我可以选择命名空间中的任何权限名称,例如com.example.myapp.permission.WHATEVER。

或者 C2D_MESSAGE 是我必须使用的一些神奇常量?


另外,文档说我必须实现接收器com.google.android.c2dm.intent.C2D_MESSAGE and com.google.android.c2dm.intent.REGISTRATION意图。但在代码示例中,接收器的过滤器仅包含.intent.RECEIVE and .intent.REGISTRATION意图。哪里C2D_MESSAGE去吧,这和我上面的问题有关系吗?

我希望这不是显而易见的事情,但我只是不明白......请帮助。


他们在摘要顶部声称您需要的接收器似乎是文档中的错误,因为它与清单示例不匹配。

“com.google.android.c2dm.intent.C2D_MESSAGE 和 com.google.android.c2dm.intent.REGISTRATION 的接收器。”)

我得到了他们提供的示例,只需使用经过调整以匹配我的特定应用程序的包名称的示例清单条目即可。

当 Android 中的 C2DM 代码发送广播时(或者更确切地说,当它寻找将广播发送到的潜在接收者时),它会查找:

查找 Intent 的广播接收器:com.google.android.c2dm.intent.注册拥有权限的:.permission.C2D_MESSAGE

Android C2DM 代码发送到您的应用程序的所有 C2DM 消息都将寻找该特定权限。它特定于您的应用程序,并且只需要位于该结构中(您的应用程序的包+“.permission.C2D_MESSAGE”)。

关于注册请求如何获取用于权限的包名称,这是在您首次使用“app”额外注册时处理的 - 来自文档:

“app 是应用程序的 ID,使用 PendingIntent 设置以允许注册服务提取应用程序信息。”

有问题的行:

registrationIntent.putExtra("app", PendingIntent.getBroadcast(this, 0, new Intent(), 0)); // boilerplate
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C2DM:如何使用C2D_MESSAGE权限? 的相关文章

随机推荐

  • C# 如何将不规则日期和时间字符串转换为DateTime?

    我有一个程序可以将不规则的日期和时间字符串转换为系统日期时间 但由于系统无法识别不规则字符串 因此 ParseExact toDateTime和TryParse方法不起作用 程序只需要转换两种类型的日期时间字符串 Thu Dec 9 05
  • 无需复制/粘贴代码即可实现 TObjectList 的排序

    我有一个对节点树中的节点进行排序的过程 虚拟树视图 http www lischke online de index php controls virtual treeview 从 FMM4 报告中提取的所有内存泄漏都存储在 TMemory
  • 颤动的一叠卡片

    我正在尝试创建一堆卡片 相互叠加并偏移 以可视化卡片的多个版本 我尝试过将卡片放入卡片中 但没有找到抵消它们的方法 我也尝试过使用 stack 类 但没有成功 有人知道我怎样才能达到这个效果吗 您使用 Stack 的方向是正确的 您只需要弄
  • 循环遍历列表以创建多个 Excel 文件

    您好 我正在尝试循环遍历列表以创建多个 Excel 文件 不是工作表 我能够在下面的代码中创建单独的数据框 但我想知道是否有人有通过循环列表创建多个 Excel 文件并使用每个公司名称创建多个 Excel 文件的示例 from dateti
  • 向量的模式匹配“case Nil”

    读完这篇文章后post https stackoverflow com a 10199441 409976关于如何使用模式匹配Vector 或任何实现的集合Seq 我在这个集合上测试了模式匹配 scala gt x Vector res38
  • 如何使用python opencv找到图像中黑色物体的中心?

    我在白色背景上查找黑色物体的轮廓时遇到问题 在这里我添加了一个图像的示例 现在我需要找到黑色区域的中心 我使用以下代码 im cv2 imread img plt imshow im gray cv2 cvtColor im cv2 COL
  • symfony 2:命名空间“Acme”不包含任何映射实体

    我正在关注这本书和页面http symfony com doc current book doctrine html http symfony com doc current book doctrine html 在阅读这本书时 我试图处理
  • 数据分析任务 - 自定义分析请求

    是否有任何选项可以为 SSIS 数据分析任务创建自定义配置文件请求 目前 SSIS 数据分析任务下有 5 个标准分析请求 列空比率配置文件请求 列统计资料请求 列长度 分布配置文件请求 列值分布配置文件请求 候选人关键资料请求 我需要添加另
  • 缩短 Angular 7 中的 SCSS 导入路径

    当我创建一个组件时 它嵌套得很深 如果我想导入一个共享的 scss 我必须用很长的路径导入它 例如 import app shared scss 这不会发生在 ts文件 我可以配置tsconfig json paths src src ap
  • 模板继承:没有依赖于模板参数的参数[重复]

    这个问题在这里已经有答案了 我在编译以下代码时遇到了这个错误 经过一些研究并阅读不同情况下的类似错误后 我想出了我需要的解决方案 但我并没有完全理解错误的根本原因和修复方法 template
  • 带有请求内容类型表单的 Http Post 在 Spring MVC 3 中不起作用

    代码片段 RequestMapping method RequestMethod POST headers content type application x www form urlencoded public ModelAndView
  • 捕获量词和量词算术

    首先 我要解释一下 这个问题既不是关于如何捕获组 也不是关于如何使用量词 这是我非常熟悉的正则表达式的两个功能 对于可能熟悉外来引擎中不寻常语法的正则表达式爱好者来说 这更像是一个高级问题 捕获量词 有谁知道正则表达式风格是否允许您捕获量词
  • 如何在 iOS 中实现 XMPP 房间的自动加入

    我想在XMPP群聊中自动加入房间 我从后端服务器创建了所有组 第一次加入房间 但是当我从 XMPP 在应用程序之外 断开连接并返回应用程序内部并重新连接 xmpp 时 我再次需要加入房间 在侧面应用程序中 一名用户已在多个房间中可用 因此无
  • eclipse 中的 java.lang.UnsupportedClassVersionError [重复]

    这个问题在这里已经有答案了 我真的不是一个Java程序员 所以我发布这个问题 在 Eclipse 项目的主类中抛出 java lang UnsupportedClassVersionError 异常 如果我注释掉该类的导入 它就会编译并运行
  • PHP中的Blowfish加密

    我正在为我的应用程序和网站编写加密 但我不知道如何正确加密 php 中的字符串 这段代码已经完成解密 function decrypt blowfish data key iv pack H substr data 0 16 key pac
  • CLGeocoder 反向地理代码位置“kCLErrorDomain 错误 2”

    我正在开发一个具有反向地理编码功能的 iOS 应用程序 当我第一次调用该函数时 一切都很好 第二次调用 使用完成调用的控制器的新实例 后 出现 Domain kCLErrorDomain Code 2 错误 这发生在模拟器和设备上 坐标有效
  • 当 JavaScript 中的数组对象递增时会发生什么?

    一个非常简单的问题 但我无法在任何地方找到答案 检查以下代码 var myArray 0 1 2 3 4 5 6 7 8 9 for i 0 i lt myArray length myArray console log Loop iter
  • 应该将列表添加到字典然后清除它的程序,首先清除它并将随后的空列表附加到字典中?

    class Matrix rowStorer generalPurposeList def init self row column self row row self column column To store away for a l
  • Github 搜索 API - 排除某些主题

    根据文档 我可以使用 从搜索 API 中排除某些内容 我对其进行了测试 例如 这适用于语言领域 但不适用于主题 根据文档 https docs github com en free pro team latest github search
  • C2DM:如何使用C2D_MESSAGE权限?

    我即将为我的应用程序实现 C2DM 但我发现文档 http code google com android c2dm writing apps关于如何编写清单有点令人困惑 清单代码示例包含以下内容