HarmonyOS 鸿蒙Next 若无位置服务权限,跳转至应用权限设置页面
HarmonyOS 鸿蒙Next 应用里拉取权限开启Demo需求
1、应用权限检查:若无位置服务权限,跳转至应用权限设置页面
2、位置服务状态检查:若手机未开启位置服务,跳转至位置服务开启页面
应用里拉取权限开启,想要一个demo 1、应用权限如果没有位置服务权限,想要跳转到应用的权限页面2、手机没有开启位置服务,想要跳转到位置服务开启页面
2 回复
module.json5加权限
{
"name" : "ohos.permission.CAMERA",
"reason": "$string:app_name",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when":"inuse"
}
}
import { common, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import abilityAccessCtrl, { Context, PermissionRequestResult } from
'@ohos.abilityAccessCtrl';
// 拉起应用权限
function startSettingsAbility(context: common.UIAbilityContext): void {
let want: Want = {
bundleName: 'com.huawei.hmos.settings',
abilityName: 'com.huawei.hmos.settings.MainAbility',
// 根据”设置”应用配置的界面信息,选择不同的uri
uri: 'application_info_entry',
// 拉起方应用包名
parameters: {
pushParams: context.abilityInfo.bundleName
// pushParams: "com.example.mytest03" // 这个可以!!!!!
// pushParams: {
// bundleName: "com.example.mytest03" // 不不不不不不行!!!
// // bundleName: context.abilityInfo.bundleName
// }
}
};
context.startAbility(want).then(() => {
console.info('Start settings ability successfully.');
}).catch((err: BusinessError) => {
console.error(Failed to startAbility. Code: ${err.code}, message: ${err.message});
});
}
// 拉起"设置"应用的通知管理界面
function startNotification(context: common.UIAbilityContext): void {
let want: Want = {
bundleName: 'com.huawei.hmos.settings',
abilityName: 'com.huawei.hmos.settings.MainAbility',
// 根据”设置”应用配置的界面信息,选择不同的uri
// uri: 'application_info_entry',
uri: 'systemui_notification_settings',
// 拉起方应用包名
parameters: {
// pushParams: context.abilityInfo.bundleName // 不不不不不不行!!!
// pushParams: "com.example.mytest03"
pushParams: {
//bundleName:"com.example.mytest03" // 这个可以!!!!!
bundleName:context.abilityInfo.bundleName
}
}
};
context.startAbility(want).then(() => {
console.info('Start settings ability successfully.');
}).catch((err: BusinessError) => {
console.error(Failed to startAbility. Code: ${err.code}, message: ${err.message});
});
}
@Entry
@Component
struct StartSettingsAbilityView {
@State message: string = '拉起应用权限';
@State notification: string = '拉起通知管理';
@State str: string = '相机授权';
getCameraPermission(): void {
let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
let context: Context = getContext(this) as common.UIAbilityContext;
atManager.requestPermissionsFromUser(context, ['ohos.permission.CAMERA'],
(err: BusinessError, data: PermissionRequestResult) => {
if (err) {
console.error(requestPermissionsFromUser fail, err->${JSON.stringify(err)});
} else {
console.info('data:' + JSON.stringify(data));
console.info('data permissions:' + data.permissions);
console.info('data authResults:' + data.authResults);
console.info('data dialogShownResults:' + data.dialogShownResults);
}
});
}
build() {
Row() {
Column() {
Button(this.str)
.fontSize(20)
.fontWeight(FontWeight.Bold)
.onClick(() => {
this.getCameraPermission()
})
Button(this.message)
.fontSize(20)
.fontWeight(FontWeight.Bold)
.onClick(() => {
const context: common.UIAbilityContext = getContext(this) as
common.UIAbilityContext;
startSettingsAbility(context);
})
Button(this.notification)
.fontSize(20)
.fontWeight(FontWeight.Bold)
.onClick(() => {
const context: common.UIAbilityContext = getContext(this) as
common.UIAbilityContext;
startNotification(context);
})
Button("位置服务").onClick(()=>{
let context = getContext(this) as common.UIAbilityContext;
let want: Want = {
bundleName: 'com.huawei.hmos.settings',
abilityName: 'com.huawei.hmos.settings.MainAbility',
uri: "location_manager_settings",//消息通知传uri:systemui_notification_settings, 蓝牙传uri:bluetooth_entry, Wi-Fi传uri:wifi_entry,定位权限传uri:location_manager_settings
parameters: {
pushParams: {
bundleName:""
} // 应用包名
}
};
console.log("want",want)
context.startAbility(want)
}).margin(10)
}
.justifyContent(FlexAlign.SpaceAround)
.width('100%')
.height('50%')
}
.height('100%')
}
}
更多关于HarmonyOS 鸿蒙Next 若无位置服务权限,跳转至应用权限设置页面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next应用中,针对拉取权限开启Demo需求,可以按以下方式实现:
1、应用权限检查:
在代码中检查应用是否已获得位置服务权限。若未获得,则通过系统接口获取跳转到应用权限设置页面的Intent,并启动该Intent,引导用户手动开启权限。
示例代码(伪代码):
if (!hasLocationPermission()) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
}
2、位置服务状态检查:
在代码中检查手机位置服务是否已开启。若未开启,则通过系统接口获取跳转到位置服务开启页面的Intent,并启动该Intent,引导用户手动开启位置服务。
示例代码(伪代码):
if (!isLocationServiceEnabled()) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
注意,上述代码中的方法hasLocationPermission()
和isLocationServiceEnabled()
需根据HarmonyOS API文档实现,用于检查权限和位置服务状态。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html