应用程序因缺少权限请求而崩溃

时间:2018-01-02 18:42:28

标签: android permissions crash geolocation

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

  

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

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

然而,实际上让我感到困惑的是,在我的清单文件中,我只请求 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 的许可吗?

1 个答案:

答案 0 :(得分:1)

ACCESS_FINE_LOCATIONACCESS_COARSE_LOCATION都是危险的许可。

  

当您从位置获取位置时,需要ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION   NetworkProvider。

虽然

  当您从中获取位置时,

需要ACCESS_FINE_LOCATION   GpsProvider。

因此,如果您要从NetworkProvider以及GpsProvider获取位置,则必须在ACCESS_FINE_LOCATION中添加AndroidManifest.xml权限,

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