我在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 的许可吗?
答案 0 :(得分:1)
ACCESS_FINE_LOCATION
和ACCESS_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" />