Android地图V2 – 为什么MAPS_RECEIVE权限

考虑这是一个维基的问题。

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

为什么我们要创build和使用应用程序本身的许可?

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

这个许可不能照顾这些东西?

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

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

Solutions Collecting From Web of "Android地图V2 – 为什么MAPS_RECEIVE权限"

对于未来的访客:

这个权限现在完全没有必要了。 Google Play Services 3.1.59的最新更新使其无用。 因此,它可以被删除。

资源

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

在这种情况下,Maps API会在内部设置这样一个端点(对您来说是透明的),并且可以使用此权限来对此端点进行模拟(因为这样做会需要获得您的权限)应用程序签名)。

我发现使用debugging证书时仍然需要此权限。 当我导出并签名我的应用程序时,它工作正常,但它不会工作,当我使用debugging证书。 我有与同一个密钥相关的debugging证书和应用证书的MD5。 当我最终添加这些额外的权限,它的工作。 我正在使用一个运行4.4的一切最新的Moto X。

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

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

因此,谷歌API只是让你的项目接收地图。 权限告诉在哪里使用API​​。