由于缺少权限请求,应用程序崩溃 [重复]

Posted

技术标签:

【中文标题】由于缺少权限请求,应用程序崩溃 [重复]【英文标题】: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 我明白,我以某种方式记住了它们,因此是错误的。感谢和抱歉给您带来的麻烦。 【参考方案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 的政策。现在应该可以了

以上是关于由于缺少权限请求,应用程序崩溃 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

由于缺少位置权限,应用程序在启动时崩溃

请求权限时应用程序崩溃

Facebook 权限请求使 iOS 应用程序崩溃

heroku 应用程序由于缺少模块而崩溃,但可以在 localhost 上运行

由于缺少 Microsoft.VC80.CRT v8.0.50727.6195 导致应用程序崩溃

请求权限/Android Studio 时应用程序崩溃