簡體   English   中英

Android ACTIVITY_RECOGNITION on targetAPI = 29 和設備的 Android 版本。 < 10

[英]Android ACTIVITY_RECOGNITION on targetAPI = 29 and device's Android ver. < 10

我的問題類似於Android 10 請求 ACTIVITY_RECOGNITION 的權限,我也沒有在設備上顯示權限對話框,但條件不同。

我的應用程序的目標是 API 29。

在清單中我有

<uses-permission android:name="android.permission.BODY_SENSORS"/> <- 用於測試目的

<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 的權限對話框,當我檢查權限狀態時,它總是被拒絕。

我知道權限邏輯正在工作,因為當我添加了 BODY_SENSORS 權限時,我確實獲得了 BODY_SENSORS 的權限對話框,但沒有 ACTIVITY_RECOGNITION 的權限對話框。 結果,授予了 BODY_SENSORS 的權限,但授予了 ACTIVITY_RECOGNITION - 不是:

權限數組:

android.permission.BODY_SENSORS;android.permission.ACTIVITY_RECOGNITION

grantResults 數組:

0;-1

回答我自己的問題。 請不要將其視為事實來源,它是基於我自己的測試。 也許 GoogleFit 團隊的某個人可以對此發表評論。

前提條件:您的應用面向 API29 或更高版本。

無論 Android 版本,安裝在設備上,您都應該根據文檔為 Manifest 文件添加權限。 旁注:即使在具有 Android 9 的設備上沒有這些權限,我也能夠查詢 GoogleFit HistoryApi,但 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 android.permission. ACTIVITY_RECOGNITION您將不會收到權限對話框,因此不會授予權限。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM