我的 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 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
已解决:应用程序 API 级别 28 +
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
应用程序应检查是否已授予权限:
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.ACTIVITY_RECOGNITION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
}
请求许可:
ActivityCompat.requestPermissions(thisActivity,
arrayOf(Manifest.permission.ACTIVITY_RECOGNITION),
MY_PERMISSIONS_REQUEST_ACTIVITY_RECOGNITION);
了解有关请求 Android 运行时权限的更多信息。
如果您的应用程序的目标 SDK 级别为 28 或更低,则它必须足以
指定com.google.android.gms.permission.ACTIVITY_RECOGNITION
其清单文件中的权限。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)