Android ACTIVITY_RECOGNITION для targetAPI = 29 и устройства Android ver. <10 - PullRequest
0 голосов
/ 07 мая 2020

Мой вопрос похож на Android 10 запроса разрешения для ACTIVITY_RECOGNITION в том смысле, что у меня также нет диалогового окна разрешения, отображаемого на устройстве, но условия другие.

Мое приложение нацелено на API 29.

В манифесте у меня есть

<uses-permission android:name="android.permission.BODY_SENSORS"/> <- для тестовых целей </p>

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

Запрос разрешения Manifest.permission.ACTIVITY_RECOGNITION как обычно:

fragment.requestPermissions(permissions, GOOGLE_FIT_ANDROID_PERMISSIONS_REQUEST_CODE)

На устройстве с Android 9 (API28) я не получаю диалоговое окно разрешения для ACTIVITY_RECOGNITION, и когда я проверяю статус разрешения, он всегда отклоняется.

Я знаю, что logi разрешений c работает, поскольку, когда я добавил разрешение BODY_SENSORS, я получаю диалоговое окно разрешений для BODY_SENSORS, но не для ACTIVITY_RECOGNITION. В результате разрешение для BODY_SENSORS предоставляется, но для ACTIVITY_RECOGNITION - нет:

массив разрешений:

android.permission.BODY_SENSORS;android.permission.ACTIVITY_RECOGNITION

массив grantResults:

0;-1

1 Ответ

0 голосов
/ 13 мая 2020

Отвечая на свой вопрос. Пожалуйста, не относитесь к этому как к источнику истины, это основано на моих собственных тестах. Может быть, кто-то из команды GoogleFit прокомментирует это.

Предварительные условия : ваше приложение нацелено на API29 или выше.

Независимо от версии Android, установленной на устройстве, вы должны добавить разрешения к файлу манифеста в соответствии с документацией . Боковое примечание: я смог запросить GoogleFit HistoryApi даже без этих разрешений на устройстве с Android 9, но Android 10 не будет работать.

<uses-permission android:name="android.permission.BODY_SENSORS"/>
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

Для устройств с Android 10 или выше : все просто, вы должны запросить разрешения на выполнение , те же, которые вы добавлено в манифест.

Для устройств с Android версией 9 или ниже : вам не нужно запрашивать разрешения на выполнение. Это часть, которая не была ясна из документации. Вы, конечно, можете запросить эти разрешения, но для android.permission. ACTIVITY_RECOGNITION вы не получите диалоговое окно разрешений, и в результате разрешение не будет предоставлено.

...