在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>
4 个回复
1***@126.com (作者)
希望官网能给解决一下吧, 论坛里面这个问题有很多, 但是没有合适的解决方式
DCloud_heavensoft
https://ask.dcloud.net.cn/question/73081
1***@qq.com
在app.vue 里面这样写 这个只针对于android
<script>
export default {
onLaunch: function() { //软件启动时执行 只执行一次
// 请求本地文件系统对象
plus.io.requestFileSystem(
plus.io.PUBLIC_DOCUMENTS, // 文件系统中的根目录
fs => {
// 创建或打开文件, fs.root是根目录操作对象,直接fs表示当前操作对象
</script>
<style>
/每个页面公共css /
//alt+鼠标左键点击 如果能跳转说明引入成功
/ @import "node_modules/ol/ol.css"; /
/ @import '../../ol.css'; /
/ @import url('ol/ol.css'); /
</style>
1***@qq.com
代码在这