安卓地图V2 - 为什么需要MAPS_RECEIVE权限

32

将此视为维基问题。

在我设置我的项目以支持Map V2时,需要添加MAPS_RECEIVE权限的步骤。

<permission
          android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>

为什么我们要从应用程序本身创建和消耗权限?

谷歌Play服务应用程序是否使用此权限进行交互?

这个权限无法照顾到这些事情吗?

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>

我认为使用自定义权限的目的是允许其他应用程序启动/使用我们的应用程序的服务/资源。


我只是好奇为什么我们要设置这个权限。顺便说一下,我的项目在使用Map V2时运行良好。 - Mahendran
1
@MontyThreeCard 是的..我有一段时间没有关注这篇帖子了。 - Mahendran
4个回答

85

针对未来的用户:

这个权限现在已经完全不需要了。Google Play服务版本3.1.59的最新更新使其无用。因此,它可以被删除。

来源


6
这是使用Google Cloud Messaging (GCM)和其C2D_MESSAGE权限时看到的相同模式。其目的是保护应用程序中的端点(例如广播接收器),以便某些其他组件(可能是Maps API的一部分)可以安全地联系它(否则,另一个应用程序可以通过使用相同的意图过滤器来冒充您的应用程序)。
在这种情况下,Maps API在内部设置了这样一个端点(对您来说是透明的),并且可以使用此权限来确保此端点无法被冒充(因为这样做需要权限,该权限由您的应用程序签名保护)。

3
对于未来的访问者,请查看@Exception-al的回答:“这个权限现在完全不必要。Google Play服务的最新更新版本3.1.59使它变得无用。因此,可以将其移除。” - Chiara

5

这个权限指定了你的包名,例如:

  <permission
          android:name="package_name.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
  <uses-permission android:name="package_name.permission.MAPS_RECEIVE"/>

因此,Google API 仅允许您的项目接收地图。权限告诉您在哪里使用 API。

3

我发现在使用调试证书时,仍然需要此权限。当我导出并签署应用程序时,它可以正常工作,但是在我使用调试证书时无法正常工作。我拥有我的调试证书和应用程序证书的MD5与相同密钥相关联。最终添加这些额外的权限后,它可以正常工作。我正在使用运行着4.4系统且完全更新的Moto X。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接