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

问题描述 投票:0回答:1

我的问题类似于 安卓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 如同往常一样,我也没有收到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

android permissions google-fit android-10.0 activity-recognition
1个回答
0
投票

回答我自己的问题。请不要把它当作真理的来源,它是基于我自己的测试。也许GoogleFit团队的某个人可以对此发表评论。

前提条件:您的应用是针对API29或以上版本的。

无论安卓版本如何,安装在设备上,你都应该按照以下要求为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或以上的设备:一切都很简单,你应该 申请运行时权限,与您添加到Manifest的内容相同。

对于Android版本9或以下的设备注意:你不需要申请运行时的权限。这是文件中不清楚的部分。当然,你可以请求这些权限,但对于 android.permission. ACTIVITY_RECOGNITION 你将不会收到一个权限对话框,因此权限将不会被授予。

© www.soinside.com 2019 - 2024. All rights reserved.