使用GCM时的GET_ACCOUNTS权限 – 为什么需要这个?

我有一个应用程序,实施了推送通知。

我想了解为什么我们需要“GET_ACCOUNTS”(android.permission.GET_ACCOUNTS),而实施GCM? 有些用户正在提出这个权限的担忧。 我在清单中使用了这个权限,因为它是在官方网站上给出的。

这个权限有多安全? 如果我从清单中删除这个推送通知,那么推送通知会起作用吗?

它使用Google服务的现有连接。 对于3.0之前的设备,这需要用户在他们的移动设备上设置他们的Google帐户。 运行Android 4.0.4或更高版本的设备不需要Google帐户。

所以这是许可要求的原因

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

阅读Google帐户。

阅读有关此GCM概述的更多信息


Google帐户login不再需要GCM工作。 所以你不需要android.permission.GET_ACCOUNTS权限。

如果您在GoogleCloudMessaging.register中使用GCM API),则不再需要在任何Android版本上configurationGoogle帐户。 但是,如果您使用的是过时的库( GCMRegistrar.register ),则旧版本(ICS之前)仍然需要Google帐户。

有关详情, 请访问https://groups.google.com/forum/#!topic/android-gcm/ecG-RfH-Aso 。 另一个similer线程是为什么谷歌帐户login为什么需要GCM为低于4.0.4操作系统的设备工作?

GCM不再需要GET_ACCOUNTS权限。 它曾经是向GCM注册所必需的,但最近的Play服务更新也停止使用Google帐户,甚至在Froyo和姜饼上。 如果您正在使用Play服务注册GCM(即使用GoogleCloudMessaging.register),则不再需要任何Android版本的此权限。 如果您使用的是不推荐使用的库(GCMRegistrar.register),则在4.0.4之前版本中仍然需要一个Google帐户,该帐户需要该权限。

来源 (由Google开发者发布在android-gcm Google群组中):

一些背景:

在Google服务框架中使用Google帐户注册Froyo和Gingerbread注册。 这给帐户状态不好的人带来了很多身份validation错误。

从ICS开始,GCM不依赖或使用Google帐户 – 您可以在添加帐户之前或在没有任何帐户的情况下使用它。

“播放服务”更新正在所有设备上实施新的scheme – 但似乎有less数设备有问题,我们正在调查 – 但数量远远低于旧scheme。

正如其他人所说的,对于低于4.0.4的Android设备,需要GET_ACCOUNT

如果您像我一样安装了一个自动添加此权限但不需要它的库,那么您可以通过向tools:node="remove"添加权限来删除该权限tools:node="remove"属性,如下所示:

在您的AndroidManifest.xml文件中,确保在manifest标签中定义的xmlns:tools属性,然后使用remove set添加权限:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" ...> ... <uses-permission android:name="android.permission.GET_ACCOUNTS" tools:node="remove" /> ... </manifest> 

单词或警告,这从来没有实际上为我工作,但我知道它已经为别人工作。 如果你能看到我可能做错了什么或有更多的信息,请评论!

*编辑:有一个错误报告打开,以获得此function工作: https : //bugzilla.xamarin.com/show_bug.cgi?id = 48153

当你使用

编译“com.google.android.gms:play-services:7.5.0”添加build.gradle文件意味着自动添加GET_ACCOUNT权限。

  • 例如,如果开发人员只需要在项目中使用admob,只需在build.gradle文件中指定此权限, 编译“com.google.android.gms:play-services-ads:7.5.0”,如果有任何其他解释,请参阅此链接https: //developers.google.com/android/guides/setup

我不认为这是事实。 我使用新的Gmail帐户在新鲜出厂的重新设置的姜饼设备上进行了testing,没有许可我就可以收到GCM信息。 所以文件是错误的。

GET_ACCOUNT是validation用户是否同步了Google帐号,并为每个用户(每个Google帐号)生成密钥值。 如果设备运行的版本低于Android 4.0.4,则这是必需的。