1***@126.com
1***@126.com
  • 发布:2019-07-24 10:45
  • 更新:2022-03-07 11:19
  • 阅读:3303

uniapp uni.getLocation 安卓第一次安装没有提示定位权限

分类:uni-app

uniapp uni.getLocation 安卓第一次安装没有提示定位权限

2019-07-24 10:45 负责人:无 分享
已邀请:
1***@126.com

1***@126.com (作者)

希望官网能给解决一下吧, 论坛里面这个问题有很多, 但是没有合适的解决方式

DCloud_heavensoft

DCloud_heavensoft

https://ask.dcloud.net.cn/question/73081

1***@qq.com

1***@qq.com

在app.vue 里面这样写 这个只针对于android

<script>
export default {
onLaunch: function() { //软件启动时执行 只执行一次
// 请求本地文件系统对象
plus.io.requestFileSystem(
plus.io.PUBLIC_DOCUMENTS, // 文件系统中的根目录
fs => {
// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象

                const url = "file://storage/emulated/0/mapApp/shape"  //自定义路径去添加 创建文件夹  
                //const url = "file://storage/emulated/0/离线地图/123.json"  //自定义路径去添加 数据   
                fs.root.getDirectory(url, {     //创建文件夹  
                // fs.root.getFile(url, {       //创建文件  
                  create: true  // 文件不存在则创建  
                }, fileEntry => {  
                  // 文件在手机中的路径  
                  // console.log(fileEntry.fullPath)  
                  // fileEntry.createWriter(writer => {  
                  //   // 写入文件成功完成的回调函数  
                  //   writer.onwrite = e => {  
                  //     console.log("写入数据成功");  
                  //   };  
                  //   // 写入数据  
                  //   writer.write(JSON.stringify({data:['1','2']}));  
                  // })  

                }, e => {  
                  console.log("getFile failed: " + e.message);  
                });  
              },  
              e => {  
                console.log(e.message);  
              }  
            );  
        console.log('App Launch')  

//#ifdef APP-PLUS  
  this.getandroid();  
  console.log('定位权限')  
//#endif  

    },  
    onShow: function() {  
        console.log('App Show')  

    },  
    onHide: function() {  
        console.log('App Hide')  
    },  
    methods:{  

        getandroid(){  

        //#ifdef APP-PLUS  
                    let system = uni.getSystemInfoSync() //获取系统信息  
                    if (system.platform == "android" || system.platform == "Android") {  
                        console.log('马上打开权限页面1')  
                        var context = plus.android.importClass("android.content.Context");  
                        console.log('马上打开权限页面2')  
                        var locationManager = plus.android.importClass("android.location.LocationManager");  
                        var main = plus.android.runtimeMainActivity();  
                        var mainSvr = main.getSystemService(context.LOCATION_SERVICE);  
                        console.log('马上打开权限页面3')  
                        var gpsProvider = mainSvr.isProviderEnabled(locationManager.GPS_PROVIDER); //检查是否  
                        console.log('马上打开权限页面4')  
                        if (!gpsProvider) {  
                            console.log('马上打开权限页面5')  
                            uni.showModal({  
                                title: '提示',  
                                content: '请打开手机定位服务权限',  
                                showCancel: false,  
                                success: res => {  
                                    if (!gpsProvider) {  
                                        var Intent = plus.android.importClass("android.content.Intent");  
                                        var Settings = plus.android.importClass("android.provider.Settings");  
                                        var new_Intent = new Intent(Settings.ACTIVE_LOCATION_SOURCE_SETTINGS);  
                                        main.startActivity(new_Intent);  
                                    }  
                                },  
                            });  
                        } else{  

                            uni.showLoading({  
                                title:'定位权限已经打开...'  
                            })  
                                        // uni.showLoading({  
                                        //  title:'定位中...'  
                                        // })  
                                                    uni.getLocation({  
                                                        type: 'wgs84',  
                                                        altitude: false,  
                                                        geocode: true,  
                                                        success: (res) => {  
                                                            uni.hideLoading();  
                                                            // console.log('定位结果:' + JSON.stringify(res));  
                                                            // var addressList = res.address;  
                                                            // var address = addressList.province + '' + addressList.city + '' + addressList.district + '' + addressList.street +  
                                                            //  '' + addressList.streetNum;  
                                                            // console.log(JSON.stringify(res));  
                                                            var location = {  
                                                                longitude: res.longitude,  
                                                                latitude: res.latitude,  
                                                                // address: address,  
                                                                type: res.type  
                                                            };  
                                                            callBack(location);  
                                                        },  
                                                        fail: (err) => {  
                                                        //这部分不需要可以删除  
                                                            uni.hideLoading();  
                                                            // #ifdef MP-BAIDU  
                                                            if (err.errCode === 202 || err.errCode === 10003) { // 202模拟器 10003真机 user deny  
                                                                // this.showConfirm();  
                                                            }  
                                                            // #endif  
                                                            // #ifndef MP-BAIDU  
                                                            if (err.errMsg.indexOf("auth deny") >= 0) {  
                                                                uni.showToast({  
                                                                    title: "访问位置被拒绝"  
                                                                })  
                                                            } else {  
                                                                uni.showToast({  
                                                                    title: err.errMsg  
                                                                })  
                                                            }  
                                                            // #endif  
                                                            return callBack(err.errMsg);  
                                                        }  
                                                    })  
                        }  
                    }  
                    //#endif  
            }  

    },  
}  

</script>

<style>
/每个页面公共css /
//alt+鼠标左键点击 如果能跳转说明引入成功
/ @import "node_modules/ol/ol.css"; /
/ @import '../../ol.css'; /
/ @import url('ol/ol.css'); /
</style>

1***@qq.com

1***@qq.com

代码在这

该问题目前已经被锁定, 无法添加新回复