我的目标是SDK 29,和activity过渡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"/>
我不能在弹出窗口中请求权限(什么都没有发生)。 当我试图在电话上注册转换API时,<; Andorid10,我得到了一个错误:
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#物理-activity-识别
https://developers.google.com/fit/android/authorization
好吧,我已经把它弄好了,但是它没有意义,什么都没有。
上面的不起作用,下面的起作用。 有人能告诉我为什么吗?