您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页解决 Android 10 获取不到定位信息的问题

解决 Android 10 获取不到定位信息的问题

来源:爱问旅游网

1. 前言

最近国内很多手机厂商都推送基于 Android 10 开发的自家系统了。之前其实已经对公司的APP进行适配了,但还是发现了新坑。那就是定位的问题。已经申请了定位权限,但是依旧无法进行定位。我用的是高德的定位,项目工程的 targetSdkVersion 为26。经过不断尝试,最后才发现,竟然要开启手机的定位服务,才能获取到定位信息。

2. 解决方案

方案的流程图如下所示:

如何申请定位权限,这里不展开讲。高德定位是怎么使用的,这里也不展开讲,想了解的直接去高德开放平台看就是了,文档写得很详细的。“判断是否已开启定位服务”和“如何跳转到系统的定位服务页面”,这两块接下来展开讲一讲。

2.1 判断手机定位服务是否开启

/**
  * 判断定位服务是否开启
  *
  * @param context 上下文
  * @return true:开启;false:未开启
  */
public static boolean isLocationEnabled(Context context) {
    int locationMode = 0;
    String locationProviders;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        try {
            locationMode = Settings.Secure.getInt(context.getContentResolver(), Settings.Secure.LOCATION_MODE);
        } catch (Settings.SettingNotFoundException e) {
            e.printStackTrace();
            return false;
        }
        return locationMode != Settings.Secure.LOCATION_MODE_OFF;
    } else {
        locationProviders = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
        return !TextUtils.isEmpty(locationProviders);
    }
}

2.2 跳转到系统的定位服务页面

// 通用版
startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));

// 回调版,这个可以在 onActivityResult 里判断是否成功开启定位服务
startActivityForResult(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS),
                            REQUEST_CODE_LOCATION);

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务