android.permission.ACTIVITY_RECOGNITION не распознается при попытке запросить разрешение пользователя
Google Fit дает мне следующие исключения, когда я пытаюсь подписаться на TYPE_STEP_COUNT_CUMULATIVE
(совокупные шаги) и TYPE_STEP_COUNT_DELTA
с помощью RecordingClient ( https://developers.google.com/android/reference/com/google/android/gms/fitness/RecordingClient)
failure: com.google.android.gms.common.api.ApiException: 10: SecurityException: com.google.step_count.cumulative requires android.permission.ACTIVITY_RECOGNITION
failure: com.google.android.gms.common.api.ApiException: 10: SecurityException: com.google.step_count.delta requires android.permission.ACTIVITY_RECOGNITION
Это происходит только для уровня API 29 и выше.
Я пробовал включать <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
а также <uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
в манифесте, как рекомендовано Android ACTIVITY_RECOGNITION Permission SDK 28, работающим на Android 10/Q (SDK 29),
но я не могу запросить разрешение от Main Activity.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACTIVITY_RECOGNITION), REQUEST_CODE) // error occurs here
}
ACTIVITY_RECOGNITION не распознается, и я не получаю его как предложение при наборе текста.
1 ответ
Я нацелился на API 28 в градиенте. Только после изменения целевого API29 разрешение было распознано IDE. Google представил разрешение для ACTIVITY_RECOGNITION для API 29 и выше, поскольку это считается опасным разрешением. Для API 28 и ниже разрешение автоматически предоставляется во время выполнения, но если пользователь удаляет разрешение, его также необходимо обработать. Вы можете найти больше об этом здесь и здесь