Android Map V2 - 为啥需要 MAPS_RECEIVE 权限

Posted

技术标签:

【中文标题】Android Map V2 - 为啥需要 MAPS_RECEIVE 权限【英文标题】:Android Map V2 - Why MAPS_RECEIVE permissionAndroid Map V2 - 为什么需要 MAPS_RECEIVE 权限 【发布时间】:2013-01-27 18:44:14 【问题描述】:

将此视为 wiki 问题。

当我设置我的项目以支持 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"/>

我们为什么要创建和使用来自应用程序本身的权限?

该 google play services 应用是否使用此权限进行交互?

这个权限不能处理这些事情吗?

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

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

【问题讨论】:

我只是好奇我们为什么要设置这个权限。顺便说一句,我的项目在 Map V2 上运行良好。 @MontyThreeCard 是的.. 我有一段时间没有跟进这篇文章了 【参考方案1】:

对于未来的访客:

这个权限现在完全没有必要了。的最新更新 Google Play Services 3.1.59 让它变得毫无用处。结果,它可以 删除。

source

【讨论】:

【参考方案2】:

这与您在使用具有C2D_MESSAGE 权限的Google Cloud Messaging (GCM) 时看到的模式相同。这个想法是保护应用程序中的端点(例如广播接收器),以便其他一些组件(可能是 Maps API 的一部分)可以安全地联系它(否则,另一个应用程序可以通过使用相同的意图过滤器来模拟您的应用程序)。

那么,在这种情况下,Maps API 会在内部设置这样一个端点(对您来说是透明的),并且可以通过使用此权限使该端点无法被模拟(因为这样做需要权限,即受您的应用程序签名保护)。

【讨论】:

对于未来的访问者,请查看@Exception-al 答案:“现在完全不需要此权限。Google Play 服务 3.1.59 的最新更新使其无用。因此,可以将其删除。 "【参考方案3】:

此权限指定您的包名称。 即

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

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

【讨论】:

【参考方案4】:

我发现在使用调试证书的时候还是需要这个权限的。当我导出并签署我的应用程序时,它运行良好,但是当我使用调试证书时它就不起作用了。我的调试证书和应用程序证书的 MD5 都与同一个密钥关联。当我最终添加这些额外的权限时,它起作用了。我正在使用运行 4.4 的 Moto X,一切都是最新的。

【讨论】:

以上是关于Android Map V2 - 为啥需要 MAPS_RECEIVE 权限的主要内容,如果未能解决你的问题,请参考以下文章

Android,如何从 Google Map V2 中删除所有标记?

如何在android map api V2中为标记设置动画?

Android onLocationChanged with Direction使用Google Map Api v2

如何在 Google Map Api V2 Android 中搜索?

隐藏信息窗口 android map api v2

android google map v2 在 gmap lstarts 上不断崩溃