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

#### 问题现象

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

#### 背景知识

*   关于位置定位服务开发文档可见位置定位。
*   位置服务错误码：3301100-位置功能的开关未开启导致功能失败。
*   JsCrash异常根据不同的异常场景，在Reason字段进行了分类，分为Error、TypeError、SyntaxError、ReferenceError、RangeError等错误类型。参考文档JS Crash（进程崩溃）检测。
*   JsCrash日志可参考日志规格。

#### 问题定位

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.  排查堆栈中的代码在使用定位服务时，是否先判断位置开关已打开，是否捕获了异常并处理。

#### 分析结论

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

#### 修改建议

建议参考文档获取设备的位置信息开发指导，应用调用位置服务接口前，应当先判断位置开关状态是否开启，如果位置开关未开启，可以使用requestGlobalSwitch接口拉起全局开关设置弹框提醒用户开启，代码示例参考开发步骤。