gpt4 book ai didi

android - 如何向用户询问多个权限?

转载 作者:行者123 更新时间:2023-12-03 04:52:31 25 4
gpt4 key购买 nike

在运行时向用户询问了权限,但我需要询问多个权限,例如电话,联系人,SMS等,因此我坚持认为如何一个接一个地调用此方法,在一个权限完成后是否有任何方法可以询问另一个弹出窗口打开了吗?

      import 'package:permission_handler/permission_handler.dart';

class PermissionService{
final PermissionHandler _permissionHandler = PermissionHandler();

Future<bool> _requestPermissionContact(PermissionGroup permission) async {
var result = await _permissionHandler.requestPermissions([permission]);
if (result[PermissionGroup.contacts] == PermissionStatus.granted) {
print("sfhalsjfhas fasdhufaiusfh aloifahdf oalsifu");
}

}


Future<bool> requestContactPermission({Function onPermissionDenied}) async {
var granted = await _requestPermissionContact(PermissionGroup.contacts);
if (!granted) {
onPermissionDenied();
}
return granted;
}

Future<bool> hasContactPermission() async {
return hasPermission(PermissionGroup.contacts);
}

Future<bool> _requestPermissionSms(PermissionGroup permission) async {
var result = await _permissionHandler.requestPermissions([permission]);
if (result[permission] == PermissionStatus.granted) {
print("sfhalsjfhas fasdhufaiusfh aloifahdf oalsifu");
return true;
}
return false;
}

Future<bool> requestSmsPermission({Function onPermissionDenied}) async {
var granted = await _requestPermissionSms(PermissionGroup.sms);
if (!granted) {
onPermissionDenied();
}
return granted;
}

Future<bool> hasSmsPermission() async {
_requestPermissionPhone(PermissionGroup.phone);
return hasPermission(PermissionGroup.sms);
}

Future<bool> _requestPermissionPhone(PermissionGroup permission) async {
var result = await _permissionHandler.requestPermissions([permission]);
if (result[permission] == PermissionStatus.granted) {
return true;
}
return false;
}

Future<bool> requestPhonePermission({Function onPermissionDenied}) async {
var granted = await _requestPermissionPhone(PermissionGroup.phone);
if (!granted) {
onPermissionDenied();
}
return granted;
}

Future<bool> hasPhonePermission() async {
return hasPermission(PermissionGroup.phone);
}

Future<bool> hasPermission(PermissionGroup permission) async {
var permissionStatus =
await _permissionHandler.checkPermissionStatus(permission);
return permissionStatus == PermissionStatus.granted;
}
}

这是我的权限类,我想调用这三个权限,在initState中,我这样称呼它
    @override
initState() {

permissionAcess();
permissionAcessSms();
permissionAcessPhone();

super.initState();
}


Future permissionAcess() {
PermissionService().requestContactPermission(onPermissionDenied: () {
print('Permission has been denied');
});
}

Future permissionAcessSms() {
PermissionService().requestSmsPermission(onPermissionDenied: () {
print('Permission has been denied');
});
}

Future permissionAcessPhone() {
PermissionService().requestPhonePermission(onPermissionDenied: () {
print('Permission has been denied');
});
}

但是它只调用了一个权限,那么如何在运行时调用这三个权限呢?

最佳答案

是的,您可以同时请求多个权限,只需像这样更新代码
您的PermissionServices文件将是

   import 'package:permission_handler/permission_handler.dart';

class PermissionService{
final PermissionHandler _permissionHandler = PermissionHandler();

Future<bool> _requestPermission() async {
var result = await _permissionHandler.requestPermissions([PermissionGroup.phone,PermissionGroup.contacts,PermissionGroup.sms]);
if (result == PermissionStatus.granted) {
return true;
}
return false;
}

Future<bool> requestPermission({Function onPermissionDenied}) async {
var granted = await _requestPermission();
if (!granted) {
onPermissionDenied();
}
return granted;
}

Future<bool> hasPhonePermission() async {
return hasPermission(PermissionGroup.phone);
}

Future<bool> hasPermission(PermissionGroup permission) async {
var permissionStatus =
await _permissionHandler.checkPermissionStatus(permission);
return permissionStatus == PermissionStatus.granted;
}
}

并且您的initState将是
  @override
initState(){
permissionAcessPhone();
super.initState();
}

Future permissionAcessPhone() {
PermissionService().requestPermission(onPermissionDenied: () {
print('Permission has been denied');
});
}

关于android - 如何向用户询问多个权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61153382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com