我正在针对SDK 29进行开发,并且在运行Android 10的设备上使用activity transition API时可以完美地工作。根据文档,如果你的目标SDK是29,但在运行较低版本的SDK上,权限应该会自动授权。
我已经分别尝试了这两种情况,以及它们同时出现的情况。
如果我将目标SDK设置为28,则所有手机上都可以完美运行,但出于其他原因,我需要将其设置为29。我感到非常苦恼。 明确一点,它在Android 10上可以完美运行,但在以下版本上无法正常运行。下面是更多代码以供澄清:
我已经分别尝试了这两种情况,以及它们同时出现的情况。
<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION"/>
在弹出窗口中,我无法请求权限(什么都不会发生)。当我尝试在Android 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();
}