有一个神秘而未公开的 Android权限:WRITE_GSERVICES。像往常一样,Google自己的文档比任何糟糕的童话故事都更加神秘,写道:
android.permission.WRITE_GSERVICES Allows an application to modify the Google service map.
但是,使用Google搜索(!)Google Service Map
不会产生任何作用。
它的作用是什么,它的作用是什么?
有一个神秘而未公开的 Android权限:WRITE_GSERVICES。像往常一样,Google自己的文档比任何糟糕的童话故事都更加神秘,写道:
android.permission.WRITE_GSERVICES Allows an application to modify the Google service map.
但是,使用Google搜索(!)Google Service Map
不会产生任何作用。
它的作用是什么,它的作用是什么?
Answers:
请注意,此权限几乎是完全没有证件的,因此我们需要摸索它的真正含义。因此,这绝不是“权威性答案”,而是“好猜”和“从其他指标中推论”之间的某种程度的区别。
该许可的正式描述(如前所述,没有进一步的文档)是:
允许应用程序修改Google服务地图。
现在,我们可以猜测这意味着什么。让我们做一些“逆向工程”,以感觉到自己的方式。瑞安(Ryan)在评论中已经指出了一些要点,它涉及两个SO问题:
READ_GSERVICES
)字里行间:每当应用程序要使用(部分)谷歌服务框架,它必须声明READ_GSERVICES
许可所必需的-这是非常相似的要求GET_ACCOUNTS
,如果你想USE_CREDENTIALS
:应用程序首先需要确保所需的服务可用根本没有访问它。
这使我们对Google Service Map必须是什么有了一个概念:某种可用(已安装)Google Services的索引。
既然我们已经发现了,我们就可以很好地猜测该WRITE_GSERVICES
权限的意图–以及为什么它受system
保护级别保护(意味着,它仅授予“系统应用”)-即那些集成到ROM中的内容,即安装在/system
分区上):如果READ_GSERVICES
要弄清楚哪些Google服务可用,则WRITE_GSERVICES
必须将其作为对等方以更新该服务图。例如,每当安装(或移除)新服务时,即可更新“设备上可用的Google Services索引” –“ Google Service Map”。
在这种情况下,我想知道的一件事是,为什么此权限属于该ACCOUNTS
组 ……
也可以看看:
READ_GSERVICES
为“允许API 访问基于Google网络的服务 ”(引用android-developers@googlegroups.com
邮件列表中的消息)ACCOUNTS
组,因为它包括例如Google帐户身份验证 ;)ACCOUNTS
组中使用此权限的另一点:许多Google服务都要求登录才能使用,因此可能需要进行交叉核对(例如,传输您的帐户名以检查给定的用户是否拥有“活动用户”服务,甚至无需登录/传输密码/ AUTH令牌)。