android - 缺少 Android 活动识别权限
问题描述
我的目标是 SDK 29,并且活动转换 API 在运行 29(即 Android 10)的设备上完美运行。根据文档,如果您的目标是 SDK 29,但在较低的 SDK 上运行,则应自动授予权限。
我都试过了,分开和一起
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION"/>
我不能在弹出窗口中请求许可(没有任何反应)。当我尝试在手机 < Andorid 10 上注册 Transitions API 时,我收到错误消息:
com.google.android.gms.common.api.b: 10: SecurityException: Activity detection usage requires the ACTIVITY_RECOGNITION permission
如果我将目标 SDK 设置为 28,则所有手机都可以正常运行,但出于其他原因,我需要将目标设置为 29。我正在拔头发。需要明确的是,它在 Android 10 上完美运行,而不是低于。进一步说明代码:
public void askForActivityPermission(View v) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
Log.d(TAG, "askForActivityPermission: q or greater");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACTIVITY_RECOGNITION}, PERMISSION_REQUEST_ACTIVITY_RECOGNITION);
} else {
Log.d(TAG, "askForActivityPermission: less than q");
moveNextStep();
}
}
@Override
public void onRequestPermissionsResult(
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
String permissionResult = "Request code: " + requestCode + ", Permissions: " +
Arrays.toString(permissions) + ", Results: " + Arrays.toString(grantResults);
Log.d(TAG, "onRequestPermissionsResult(): " + permissionResult);
if (requestCode == PERMISSION_REQUEST_ACTIVITY_RECOGNITION) {
Log.d(TAG, "onRequestPermissionsResult: permission granted?");
moveNextStep();
}
解决方案
API 级别 29 中有一些更新。
1.将权限添加到清单文件。
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
2.检查是否授予权限:
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.ACTIVITY_RECOGNITION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
}
3.如果尚未授予权限,请请求权限:
ActivityCompat.requestPermissions(thisActivity,
arrayOf(Manifest.permission.ACTIVITY_RECOGNITION),
MY_PERMISSIONS_REQUEST_ACTIVITY_RECOGNITION);
这里有一些有用的文档。
https://developer.android.com/about/versions/10/privacy/changes#physical-activity-recognition
推荐阅读
- python - Python中的实时信号处理
- python - 检测图像中的圆线段
- amazon-web-services - 根据 S3 GetObject 和 DeleteObject 请求的速率限制触发警报
- node.js - 如何在 Node.js 中使用 MongoDB 更改流来填充新集合
- python - E: 包 'python-pip' 没有安装候选
- c++ - 使用 GL_TRIANGLE_STRIP 将每一列相互连接
- python - 尝试 np.meshgrid Python 的功能时出现“ValueError:使用序列设置数组元素”
- python - 带有公式的 Python 和 CSV
- oracle - 如何访问 apex Web 服务模块响应正文中的集合
- reactjs - 轴上的刻度未出现