web-dev-qa-db-ja.com

Android ACTIVITY_RECOGNITION Permission SDK 28 on Android 10 / Q(SDK 29)

私のAndroidアプリはSDK 28を対象としており、Google Fitに接続してデータをアップロードし、その他のデータを読み取ります。アプリはHistoryAPIを使用してcom.google.step_count.deltaデータを読み取ります。

このドキュメントでは、アプリがSDK 28をターゲットにしているがSDK 29で実行している場合、「com.google.Android.gms.permission.ACTIVITY_RECOGNITION権限は事前に付与されたランタイム権限に変換される」と記載されています。 https://developers.google .com/fit/Android/authorization#Android_permissions

ドキュメントに書かれているように、アプリのマニフェストに追加しました。

このAndroidアプリはAndroid 10(SDK 29)を実行しているデバイス上にあり、ユーザーが初めてGoogle Fitに接続すると、次のようなログが表示されます。 :

There was a problem subscribing.com.google.Android.gms.common.api.ApiException: 10: SecurityException: com.google.step_count.delta requires Android.permission.ACTIVITY_RECOGNITION

それでも、ドキュメントには、これが事前に付与されたランタイム権限に変換されることが記載されています。

チームはまだアプリのターゲットSDKを29に移行する準備ができていないので、このエラーなしでcom.google.step_count.deltaデータを引き続き取得するにはどうすればよいですか?

このログは、次のようなログステートメントがないため、実際には接続しなかったことを意味すると想定しています。

Successfully subscribed to com.google.step_count.delta
3
Karringgton

ドキュメントが更新されたようです: https://developer.Android.com/about/versions/10/privacy/changes#physical-activity-recognition

マニフェスト(com.google.Android.gms.permission.ACTIVITY_RECOGNITION)のAPI 28権限を使用してonlyでこれを解決できました。

アプリがAndroid 10(API 29)を実行しているデバイスにインストールされている場合、システムは権限をAndroid.permission.ACTIVITY_RECOGNITIONに正しく自動付与するように見えます。

ユーザーは設定でこれを変更できるため([設定]> [アプリと通知]> [権限マネージャー]> [身体活動]> [指定したアプリ]> [拒否])、アプリがAndroid 10(API 29)。

0
Karringgton