uni-app 4.31 alpha 鸿蒙版必须设置定位权限 问题:在设置中禁止定位后 app界面整体空白
uni-app 4.31 alpha 鸿蒙版必须设置定位权限 问题:在设置中禁止定位后 app界面整体空白
示例代码:
{
"requestPermissions": [
{
"name": "ohos.permission.APPROXIMATELY_LOCATION",
"reason": "$string:location_tips",
"usedScene": {
"when": "inuse"
}
},
{
"name": "ohos.permission.LOCATION",
"reason": "$string:location_tips",
"usedScene": {
"when": "inuse"
}
}
]
}
uni.getLocation({
type: 'wgs84',
geocode: true,
isHighAccuracy: true,
success: function(res) {
_this.longitude = res.longitude
_this.latitude = res.latitude
console.log('location===', JSON.stringify(res));
}
})
操作步骤:
- 页面上允许定位权限后,打开设置,禁止定位权限,返回app,app空白
预期结果:
- 正常
实际结果:
- 页面空白
bug描述:
- 页面上允许定位权限后,打开设置,禁止定位权限,返回app,app空白
| 信息类型 | 信息内容 |
|------------------|------------------------|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | win11 |
| HBuilderX类型 | Alpha |
| HBuilderX版本 | 4.31 |
| 手机系统 | HarmonyOS NEXT |
| 手机系统版本 | HarmonyOS NEXT Developer Beta2 |
| 手机厂商 | 华为 |
| 手机机型 | mate60 |
| 页面类型 | vue |
| vue版本 | vue3 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 4.31 alpha 鸿蒙版必须设置定位权限 问题:在设置中禁止定位后 app界面整体空白的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
你好,我这里经过测试,没有复现相关的问题,你尝试更新到最新 deveco 试试。
更多关于uni-app 4.31 alpha 鸿蒙版必须设置定位权限 问题:在设置中禁止定位后 app界面整体空白的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
uni-im里发了你一个视频,麻烦帮忙看下
不止定位权限,录音权限也一样,可能权限都有这个问题
在uni-app 4.31 alpha 鸿蒙版中,如果应用定位权限被禁止而导致界面整体空白,这通常是因为应用依赖于定位功能,并且没有适当地处理权限被拒绝的情况。为了解决这个问题,你可以采取以下步骤:
- 检查定位权限:在应用启动时检查定位权限是否被授权。
- 处理权限拒绝:如果权限被拒绝,显示一个提示信息,并引导用户去设置中开启权限,而不是让界面整体空白。
下面是一个简单的代码示例,展示如何在uni-app中实现这些功能:
// 在 main.js 或 app.js 中初始化应用时检查定位权限
import * as plus from 'plus';
function checkLocationPermission() {
return new Promise((resolve, reject) => {
plus.android.importClass('android.Manifest');
plus.android.importClass('android.content.pm.PackageManager');
const context = plus.android.runtimeMainActivity();
const pm = context.getPackageManager();
const permission = plus.android.getAttribute(plus.android.Manifest.permission.ACCESS_FINE_LOCATION, 'name');
if (pm.checkPermission(permission, context.getPackageName()) === plus.android.PackageManager.PERMISSION_GRANTED) {
resolve(true); // 权限已授权
} else {
resolve(false); // 权限未授权
}
});
}
async function initApp() {
try {
const hasPermission = await checkLocationPermission();
if (!hasPermission) {
// 权限被拒绝,显示提示信息
uni.showModal({
title: '提示',
content: '应用需要您的定位权限,请前往设置中开启',
success: function (res) {
if (res.confirm) {
// 跳转到系统设置页面(鸿蒙系统可能需要特殊处理,这里以Android为例)
plus.runtime.openURL('_blank', 'package:settings');
}
}
});
// 你可以在这里处理界面显示问题,比如显示一个备用页面
// uni.redirectTo({ url: '/pages/noPermission/noPermission' });
} else {
// 权限已授权,正常初始化应用
// ...
}
} catch (error) {
console.error('检查定位权限时出错:', error);
}
}
// 在应用启动时调用 initApp 函数
initApp();
请注意,上述代码中的 plus.runtime.openURL('_blank', 'package:settings');
是针对Android系统的,鸿蒙系统可能需要使用不同的URL或API来打开系统设置页面。你可能需要查阅鸿蒙系统的开发文档来找到正确的URL或API。
此外,确保在 manifest.json
文件中正确声明了定位权限。如果权限声明不正确,应用可能无法请求到定位权限。