permission.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import 'package:permission_handler/permission_handler.dart';
  2. import 'interfaces/permission.dart';
  3. class PermissionManager implements IPermissionManager {
  4. PermissionManager();
  5. @override
  6. Future<void> requestLocationPermission() async {
  7. PermissionStatus status = await Permission.location.request();
  8. if (status.isGranted) {
  9. // 权限已授予,可以进行相关操作
  10. // 在这里添加你的逻辑代码
  11. return;
  12. } else {
  13. // 权限被拒绝
  14. if (status.isPermanentlyDenied) {
  15. // 用户永久拒绝了权限,你可以引导用户前往设置页面手动授予权限
  16. openAppSettings();
  17. } else {
  18. // 用户暂时拒绝了权限
  19. // 在这里可以给用户一些解释,然后再次请求权限
  20. requestLocationPermission();
  21. }
  22. return;
  23. }
  24. }
  25. @override
  26. Future<void> requestBluetoothConnectPermission() async {
  27. PermissionStatus status = await Permission.bluetoothConnect.request();
  28. if (status.isGranted) {
  29. // 权限已授予,可以进行相关操作
  30. // 在这里添加你的逻辑代码
  31. return;
  32. } else {
  33. // 权限被拒绝
  34. if (status.isPermanentlyDenied) {
  35. // 用户永久拒绝了权限,你可以引导用户前往设置页面手动授予权限
  36. openAppSettings();
  37. } else {
  38. // 用户暂时拒绝了权限
  39. // 在这里可以给用户一些解释,然后再次请求权限
  40. requestBluetoothConnectPermission();
  41. }
  42. return;
  43. }
  44. }
  45. @override
  46. Future<void> requestBluetoothScanPermission() async {
  47. PermissionStatus status = await Permission.bluetoothScan.request();
  48. if (status.isGranted) {
  49. // 权限已授予,可以进行相关操作
  50. // 在这里添加你的逻辑代码
  51. return;
  52. } else {
  53. // 权限被拒绝
  54. if (status.isPermanentlyDenied) {
  55. // 用户永久拒绝了权限,你可以引导用户前往设置页面手动授予权限
  56. openAppSettings();
  57. } else {
  58. // 用户暂时拒绝了权限
  59. // 在这里可以给用户一些解释,然后再次请求权限
  60. requestBluetoothScanPermission();
  61. }
  62. return;
  63. }
  64. }
  65. @override
  66. Future<void> requestBluetoothAdvertisePermission() async {
  67. PermissionStatus status = await Permission.bluetoothAdvertise.request();
  68. if (status.isGranted) {
  69. // 权限已授予,可以进行相关操作
  70. // 在这里添加你的逻辑代码
  71. return;
  72. } else {
  73. // 权限被拒绝
  74. if (status.isPermanentlyDenied) {
  75. // 用户永久拒绝了权限,你可以引导用户前往设置页面手动授予权限
  76. openAppSettings();
  77. } else {
  78. // 用户暂时拒绝了权限
  79. // 在这里可以给用户一些解释,然后再次请求权限
  80. requestBluetoothAdvertisePermission();
  81. }
  82. return;
  83. }
  84. }
  85. @override
  86. Future<void> requestInstallPackagesPermission() async {
  87. PermissionStatus status = await Permission.requestInstallPackages.request();
  88. if (status.isGranted) {
  89. // 权限已授予,可以进行相关操作
  90. // 在这里添加你的逻辑代码
  91. return;
  92. } else {
  93. // 权限被拒绝
  94. if (status.isPermanentlyDenied) {
  95. // 用户永久拒绝了权限,你可以引导用户前往设置页面手动授予权限
  96. openAppSettings();
  97. } else {
  98. // 用户暂时拒绝了权限
  99. // 在这里可以给用户一些解释,然后再次请求权限
  100. requestInstallPackagesPermission();
  101. }
  102. return;
  103. }
  104. }
  105. }
  106. enum PermissionEnum {
  107. //音视频相关
  108. VideoAndVoiceRelevant,
  109. //IO相关
  110. IORelevant,
  111. //App 需要的所有权限
  112. All,
  113. }