【问题标题】:App crashes due to missing permission request [duplicate]由于缺少权限请求,应用程序崩溃 [重复]
【发布时间】:2018-06-12 11:06:50
【问题描述】:

我在 Firebase 的崩溃报告部分收到以下运行时异常:

java.lang.SecurityException:“gps”位置提供程序需要 ACCESS_FINE_LOCATION 权限。

正如this answer 所说,异常可以通过在运行时请求权限来解决。

然而,真正困扰我的是,在我的 Manifest 文件中,我只请求 COARSE LOCATION 权限,而 FINE LOCATION 从来没有。

AndroidManifest.xml

    ... // other permissions
   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    ... // no sign of fine location

为什么缺少权限会引发这样的异常?

注意:这是该应用自启动以来首次崩溃。崩溃发生在装有 Android 4.4.2 的 ALLVIEW VivaH7 API 19 上。 (在任何其他设备或 API 上还没有类似的崩溃)

此外,COARSE LOCATION 是否与 FINE LOCATION 一样被视为危险许可?因此,我应该在运行时请求 COARSE LOCATION 的权限吗?

【问题讨论】:

  • 您不能使用只有课程位置的 gps 提供程序。如果您使用 gps,则必须请求 ACCESS_FINE_LOCATION。如果你不需要 gps 并且只需要网络位置,那么你可以使用 ACCESS_COARSE_LOCATION。
  • @DanielNugent 我明白,我以某种方式记住了它们,因此是错误的。感谢和抱歉给您带来的麻烦。

标签: android permissions crash geolocation


【解决方案1】:

ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION 都是危险权限。

获取位置时需要 ACCESS_FINE_LOCATION 或 ACCESS_COARSE_LOCATION 网络提供商。

虽然,

当您从以下位置获取位置时,需要 ACCESS_FINE_LOCATION GpsProvider。

因此,如果您从NetworkProviderGpsProvider 获取位置,您还必须在AndroidManifest.xml 中添加ACCESS_FINE_LOCATION 权限,

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

【讨论】:

  • 为什么?只要我需要粗略估计用户的位置,我就认为添加另一个权限没有意义。我的问题仍然存在,为什么应用程序由于缺少清单中未说明的权限而崩溃?
  • 检查我的答案@CatalinGhita
  • 正如我上面所说,我以某种方式记住了他们。因此错了,谢谢!
  • 您必须再等 2 分钟。我已经试过了,看来你太快了哈哈
  • 显然,我不能这么快就批准答案。这是 SO 的政策。现在应该可以了
猜你喜欢
  • 2018-09-14
  • 2017-07-05
  • 2018-09-15
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 2018-03-27
相关资源
最近更新 更多