缺少安卓活动识别权限



我的目标是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_REC‌​OGNITION"/>

我无法在弹出窗口中请求许可(没有任何反应(。当我尝试在 Andorid 10

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 Level 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

https://developers.google.com/fit/android/authorization

我已经尝试了所有建议的解决方案,但没有一个成功。我已经尝试了com.google.android.gms.permission.ACTIVITY_REC‌​OGNITIONcom.google.android.gms.permission.ACTIVITY_RECOGNITION的所有组合

minSdkVersion 26targetSdkVersion 30

使用 Android 9 (API 28( Wear OS 模拟器。

好的,我已经让它工作了,但它没有任何意义,就像没有一样。

<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_REC‌​OGNITION" />

<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />

顶部的不起作用,底部的不起作用。谁能告诉我为什么?

最新更新