最近公司新项目,使用uniapp封装APP,通过获取用户位置来拉取附近店铺,但是有一些用户的GPS位置服务并没有开启,解决步骤如下

第一步,在manifest.json中的权限模块勾选ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION

第二步,在App.vue文件中拦截检查用户是否开启了位置服务 

onLaunch:function(){
    uni.getSystemInfo({
        success:function(res){
            var platform = res.platform;
            if(platform === 'android'){
                var context = plus.android.importClass("android.content.Context"); 
                var locationManager = plus.android.importClass("android.location.LocationManager");
                var main = plus.android.runtimeMainActivity();
                var mainSvr = main.getSystemService(context.LOCATION_SERVICE);
                if(!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)){
                    uni.showModal({
                        title:"提示",
                        content:"请打开定位服务功能",
                        showCancel:false,
                        success(){
                            if(!mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER)){
                                var Intent = plus.android.importClass("android.content.Intent");
                                var Settings = plus.android.importClass("android.provider.Settings");
                                var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGDS);
                                main.startActivity(intent);
                            }else{
                                console.log('GPS已经开启');
                            }
                        }
                    })
                }
            }
        }
    })
}

完成!!! 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐