-1

我正在阅读GCM文档,有一件事让我问这个问题:为什么我需要在清单中定义权限标记并使用我定义的权限?为什么我应该在GCM的android应用中定义权限标签?

下面是代码:

<permission android:name="<your-package-name>.permission.C2D_MESSAGE" android:protectionLevel="signature" /> 

<uses-permission android:name="<your-package-name>.permission.C2D_MESSAGE" /> 

不宜此权限的服务应用程序定义,我只是添加uses-permission

如果使用permission标签需要什么signature水平确实在这里?

我正在定义一个权限,不要让任何人使用它,但我!

GCM

+1

你不完全正确。 Android OS仍然可以使用签名级权限。这就是允许这种权限的地方 - 它保护您用来接收GCM“Intents”的“BroadcastReceiver”或“Service”,这样您就可以绝对确定您正在收到真正的消息,并且没有其他应用程序正在向您发送恶意内容'看起来像GCM信息。 –

回答

3

封装级别的权限被要求只识别特定的应用程序来发送消息。

docs

你+ “.permission.C2D_MESSAGE” 权限 ,以防止其他Android应用程序注册和接收 的Android应用程序的消息。权限名称必须完全匹配 这种模式,否则,Android应用程序将不会收到 消息

对于 e.g考虑这些权限都像电话号码和Android是建设。在建立呼叫链接时,可能有太多人在建设,但每个接收者都有自己唯一的电话号码,在此基础上,呼叫连接到该特定接收者。

签名级别:这是确认由你的意思是你的系统,它具有您GCM控制台上使用相同的SHA-1关键的应用程序进行签名。如果此标准匹配,则将立即授予C2D权限。

+1

您引用的文档部分可能有点误导。该权限并未用于识别正确的应用程序,而是为了防止其他应用程序发送恶意“Intents”,使其看起来像实际的GCM消息,而实际上它们不是。 –

+0

是的,我同意它也将以这种方式工作,如果我有钥匙锁定和其他不这样我就只能进入屋内(接收信息)其他不会,就像我只有钥匙,只有我得走进屋内,用其他方式说这是,其他人没有钥匙,所以他们不能进入屋内 –

+1

@PavneetSingh我可以在我的应用程序中使用这种权限吗?我的意思是如果我有一个服务于其他应用程序的应用程序,并且这些其他应用程序不由我签名。但他们给了我SHA-1。我可以只提供已知SHA-1的应用吗?或只是谷歌可以? – sajad

相关问题