设备关闭定位情况下，应用获取位置时闪退
===================

#### 问题现象

在设备关闭定位的情况下，应用获取位置信息会出现闪退。

#### 背景知识

*   关于位置定位服务开发文档可见[位置定位](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-positioning)。
*   [位置服务错误码](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/errorcode-geolocationmanager)：3301100-位置功能的开关未开启导致功能失败。
*   JsCrash异常根据不同的异常场景，在Reason字段进行了分类，分为Error、TypeError、SyntaxError、ReferenceError、RangeError等错误类型。参考文档[JS Crash（进程崩溃）检测](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/jscrash-guidelines)。
*   JsCrash日志可参考[日志规格](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/jscrash-guidelines#日志规格)。

#### 问题定位

1.  从faultlogger目录下获取故障日志。
2.  打开对应日志查看内容，确定故障原因是Error。
    
    异常信息是“BusinessError 3301100: The location switch is off.”，该错误码表示位置功能的开关未开启导致功能失败。
    
    Error name:Error
    Error message:BusinessError 3301100: The location switch is off.
    Error code:3301100
    Stacktrace:
    Cannot get SourceMap info, dump raw stack:
    at locationinfo (entry|entry|1.0.0|src/main/ets/model/coordinates.ts:22:1)
    at aboutToAppear (entry|entry|1.0.0|src/main/ets/pages/mapPage/mapPage.ts:95:1)
    
3.  排查堆栈中的代码在使用定位服务时，是否先判断位置开关已打开，是否捕获了异常并处理。

#### 分析结论

应用在获取当前位置信息前，未判断位置开关状态，且未捕获异常，导致应用闪退。

#### 修改建议

建议参考文档[获取设备的位置信息开发指导](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/location-guidelines)，应用调用位置服务接口前，应当先判断位置开关状态是否开启，如果位置开关未开启，可以使用[requestGlobalSwitch](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-abilityaccessctrl#requestglobalswitch12)接口拉起全局开关设置弹框提醒用户开启，代码示例参考[开发步骤](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/location-guidelines#开发步骤)。