Health Connect revokeAllPermissions() не меняет состояние разрешений в Health Connect для данного сеанса приложения.Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Health Connect revokeAllPermissions() не меняет состояние разрешений в Health Connect для данного сеанса приложения.

Сообщение Anonymous »


Я получаю статус разрешения как true даже после вызова revokePermissions().
Когда я проверил настройку подключения к работоспособности после вызова revokeAllPermissions() и пока мое приложение работало в фоновом режиме, выяснилось, что приложению по-прежнему разрешены разрешения Health Connect. Но при следующей перезагрузке приложения отображается сообщение, что приложение отключено от Health Connect.

Видел ту же проблему в образце приложения Health Connects

У меня есть функция на стороне Flutter, которая выглядит следующим образом:

void revoke() { отозвать разрешение(); проверкаForPermissions(); Получить.обратно(); } Это вызывает две собственные функции Android:
revokePermissions() и checkForPermissions() соответственно.

Их соответствующие реализации следующие:

private fun revokePermissions() { объем.запуск { if (healthConnectAvailable && !::healthConnectClient.isInitialized) { healthConnectClient = HealthConnectClient.getOrCreate(контекст!!) } healthConnectClient.permissionController.revokeAllPermissions() } } и
private fun checkForPermissions(call: MethodCall, result: Result) { val args = call.arguments как HashMap типы значений = (args["types"] as? ArrayList)?.filterIsInstance()!! вал разрешения = (args["permissions"] as? ArrayList)?.filterIsInstance()!! вар permList = mutableListOf() for ((i, typeKey) в type.withIndex()) { val доступ = разрешения!! val dataType = MapToHCType[typeKey]!! если (доступ == 0) { permList.add( HealthPermission.getReadPermission(тип данных), ) } еще { permList.addAll( Список( HealthPermission.getReadPermission(тип данных), HealthPermission.getWritePermission(тип данных), ) ) } // Для тренировки также требуется расстояние и общий расход энергии if (typeKey == ТРЕНИРОВКА) { если (доступ == 0) { permList.addAll( Список( HealthPermission.getReadPermission(DistanceRecord::class), HealthPermission.getReadPermission( TotalCaloriesBurnedRecord::класс ), ) ) } еще { permList.addAll( Список( HealthPermission.getReadPermission(DistanceRecord::class), HealthPermission.getReadPermission( TotalCaloriesBurnedRecord::класс ), HealthPermission.getWritePermission(DistanceRecord::class), HealthPermission.getWritePermission( TotalCaloriesBurnedRecord::класс ), ) ) } } } объем.запуск { if (healthConnectAvailable && !::healthConnectClient.isInitialized) { healthConnectClient = HealthConnectClient.getOrCreate(контекст!!) } вар температура = healthConnectClient.permissionController.getGrantedPermissions() .containsAll(пермлист) печать (температура) результат.успех(температура) } }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»