diff --git a/permission_handler/pubspec.yaml b/permission_handler/pubspec.yaml index cbe10b94aac88a300eb76a4503efccbe8080bfe4..2aee260c6f534f0ba24a69a9104be40cec10dc41 100644 --- a/permission_handler/pubspec.yaml +++ b/permission_handler/pubspec.yaml @@ -32,6 +32,7 @@ dependencies: url: https://gitee.com/openharmony-sig/flutter_permission_handler.git ref: master path: permission_handler_ohos + permission_handler_platform_interface: ^3.11.0 dev_dependencies: diff --git a/permission_handler_ohos/ohos/src/main/ets/com/baseflow/permissionhandler/PermissionManager.ets b/permission_handler_ohos/ohos/src/main/ets/com/baseflow/permissionhandler/PermissionManager.ets index 7b8e3df826d5cb457766144214d5549b5daea97d..4bd1b7bbac8725a7ce3526dbe3870107c72eebb1 100644 --- a/permission_handler_ohos/ohos/src/main/ets/com/baseflow/permissionhandler/PermissionManager.ets +++ b/permission_handler_ohos/ohos/src/main/ets/com/baseflow/permissionhandler/PermissionManager.ets @@ -177,7 +177,17 @@ export class PermissionManager { } } else { - this.requestResults?.set(permission, PermissionUtils.toPermissionStatus(authResult)); + // this.requestResults?.set(permission, PermissionUtils.toPermissionStatus(authResult)); + let hasDialog: boolean | null = null; + if (result.dialogShownResults != undefined) { + hasDialog = result.dialogShownResults[i]; + } + if (authResult == -1 && hasDialog == false) { + //用户已经拒绝,需要打开设置页面进行授权 + this.requestResults?.set(permission, PermissionConstants.PERMISSION_STATUS_NEVER_ASK_AGAIN); + } else { + this.requestResults?.set(permission, PermissionUtils.toPermissionStatus(authResult)); + } } PermissionUtils.updatePermissionShouldShowStatus(permission); } @@ -257,7 +267,12 @@ export class PermissionManager { Log.d(PermissionConstants.LOG_TAG, "Bluetooth permission missing in manifest"); successCallback.onSuccess(PermissionConstants.PERMISSION_STATUS_DENIED); } else { - successCallback.onSuccess(PermissionConstants.PERMISSION_STATUS_GRANTED); + // successCallback.onSuccess(PermissionConstants.PERMISSION_STATUS_GRANTED); + this.checkPermission( { + onSuccess: (permissionStatus: number) => { + successCallback.onSuccess(permissionStatus == -1 ? 0 : 1); + } + } as ESObject ,'ohos.permission.ACCESS_BLUETOOTH'); } }); } diff --git a/permission_handler_ohos/ohos/src/main/ets/com/baseflow/permissionhandler/PermissionUtils.ets b/permission_handler_ohos/ohos/src/main/ets/com/baseflow/permissionhandler/PermissionUtils.ets index 7d895a8c2544d487be665376ec321bae7089a6f5..f74fa166837e6ccb47236087510575c6854e3775 100644 --- a/permission_handler_ohos/ohos/src/main/ets/com/baseflow/permissionhandler/PermissionUtils.ets +++ b/permission_handler_ohos/ohos/src/main/ets/com/baseflow/permissionhandler/PermissionUtils.ets @@ -76,8 +76,9 @@ export default class PermissionUtils { case 'ohos.permission.DISCOVER_BLUETOOTH': return PermissionConstants.PERMISSION_GROUP_BLUETOOTH_ADVERTISE; case 'ohos.permission.MANAGE_BLUETOOTH': - case 'ohos.permission.ACCESS_BLUETOOTH': return PermissionConstants.PERMISSION_GROUP_BLUETOOTH_CONNECT; + case 'ohos.permission.ACCESS_BLUETOOTH': + return PermissionConstants.PERMISSION_GROUP_BLUETOOTH; case 'ohos.permission.NOTIFICATION_CONTROLLER': return PermissionConstants.PERMISSION_GROUP_NOTIFICATION; case 'ohos.permission.NEARBY_WIFI_DEVICES':