位置服务的 判断+获取+回调

1、准备阶段

  1. isGPSOPen用于判断是否开启位置服务(gps或者网络)
/**
 * 判断GPS是否开启,GPS或者AGPS开启一个就认为是开启的
 * @param context
 * @return true 表示开启
 */
public boolean isGPSOPen(final Context context) {
    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    // 通过GPS卫星定位,定位级别可以精确到街(通过24颗卫星定位,在室外和空旷的地方定位准确、速度快)
    boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
    // 通过WLAN或移动网络(3G/2G)确定的位置(也称作AGPS,辅助GPS定位。主要用于在室内或遮盖物(建筑群或茂密的深林等)密集的地方定位)
    boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    if (gps || network) {
        return true;
    }
    return false;
}
  1. onActivityResult用于在开启服务后回调(gps或者网络)
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 101){
        init();
    }
}

2、开始调用

public void init(){
    //判断是否开启位置服务
    if(!isGPSOPen(this)){
        //没有开启,打开设置界面
        Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
        startActivityForResult(intent, 101);
        return;//停止执行
    }

    //已开启
    //其他代码
}

    

在需要获取位置服务之前调用代码会有两种结果1.已授权位置服务正常向下执行,2.未授权位置服务->跳转到设置页授权->然后返回在onActivityResult中重新执行代码

判断是否开启的代码一定要在需要位置服务的代码之前

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容