32

将此视为一个 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"/>

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

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

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

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

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

4

4 回答 4

85

对于未来的访客:

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

来源

于 2013-07-30T02:31:16.360 回答
6

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

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

于 2013-03-07T07:12:22.217 回答
5

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

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

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

于 2014-02-09T18:59:49.033 回答
3

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

于 2014-01-06T16:00:00.357 回答