当用户单击“不允许”时,我正在使用各种插件来获取用户数据、联系人、照片和相机,应用程序进入静音状态。当用户选中从不再次询问和不允许并再次进入应用程序时,我想向用户显示询问权限对话框。
当前,当用户选中“不允许”时,应用程序不会再次询问
我知道用户必须授予应用访问个人信息的权限,包括当前位置、相机、日历、联系人、媒体库、麦克风、传感器、语音和照片。虽然人们喜欢使用可以访问这些信息的应用程序的便利性,但他们也希望能够控制他们的私人数据。例如,人们喜欢能够使用他们的实际位置自动标记照片或查找附近的朋友,但他们也希望选择禁用此类功能。
如何在颤振中再次请求用户许可?
permissions dart android-permissions flutter ios-permissions
我正在尝试请求我正在开发的应用程序的位置权限。它在 Android 设备上完美运行,但在 iOS 设备上没有任何提示。目标 iOS 版本是 11,我使用的软件包是geolocator: ^5.3.1和permission_handler: ^5.0.0+hotfix.5。
这是我的代码。
这是我的实用程序函数,用于在状态不是 时请求许可granted。
Future<PermissionStatus> getDeviceLocationPermission() async {
final PermissionStatus permissionStatus =
await Permission.locationWhenInUse.status;
if (permissionStatus != PermissionStatus.granted) {
await Permission.locationWhenInUse.request();
}
return permissionStatus;
}
Run Code Online (Sandbox Code Playgroud)
这是我收集职位详细信息的实用函数。
Future<Position> getDeviceCurrentLocation(
{@required PermissionStatus permissionStatus}) async {
Position position;
Geolocator geolocator = Geolocator()..forceAndroidLocationManager;
if (permissionStatus == null) {
return null;
}
if (permissionStatus == PermissionStatus.granted) {
position = await geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high);
}
return position;
}
Run Code Online (Sandbox Code Playgroud)
这就是我在有状态小部件内访问这些实用程序的方式。
getDeviceLocationPermission().then((permissionStatus) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试访问用户设备的麦克风,我已经成功地集成了 permissions_handler 包。当我单击麦克风图标时,请求许可消息按预期弹出,但我按拒绝来处理该情况,但是现在,当我单击麦克风图标时,没有消息弹出,因为我已经拒绝了许可。我的问题是,如果他们以前没有授予过他们的许可,我如何重新征求他们的许可?这是我的代码:
import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
class InsideLeft extends StatefulWidget {
@override
_InsideLeftState createState() => _InsideLeftState();
}
class _InsideLeftState extends State<InsideLeft> {
@override
Widget build(BuildContext context) {
return Container(
child: GestureDetector(
child: Icon(Icons.mic),
onTap: () async {
var status = await Permission.microphone.status;
switch (status) {
case PermissionStatus.granted:
print('Granted');
break;
case PermissionStatus.denied:
print('denied');
await Permission.microphone.request();
break;
case PermissionStatus.restricted:
print('restricted');
break;
case PermissionStatus.undetermined:
print('undetermined');
break;
case PermissionStatus.permanentlyDenied:
print('Permanently denied');
break;
default:
}
},
),
);
}
}
Run Code Online (Sandbox Code Playgroud)