在Android 12中,为了增强用户隐私保护,当应用请求某些高风险权限时,用户可能会看到一个新的对话框,称为“权限自动回收”。如果用户在此对话框中选择“只允许此次”,则权限将在应用退出后立即自动撤消。
在您的应用中,如果您需要BLUETOOTH_CONNECT权限,则需要注意以下事项:
检查您的应用是否具有BLUETOOTH_CONNECT权限。
如果您的应用尚未获得BLUETOOTH_CONNECT权限,则应调用checkPermission方法以确保您的应用已经获取了相应的权限:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED) { // 已经获得了该权限,可以在此执行相应操作 }
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.BLUETOOTH_CONNECT}, BLUETOOTH_CONNECT_REQUEST_CODE);
如果用户拒绝授予BLUETOOTH_CONNECT权限,您的应用应该在下次请求该权限时更加清晰地解释它所需要的原因,以增加用户意愿。
此外,您应该在您的应用中实现onRequestPermissionsResult方法,以便向用户显示适当的消息:
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { switch (requestCode) { case BLUETOOTH_CONNECT_REQUEST_CODE: { // 如果请求被取消,则结果数组为空。 if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // 权限已授予。可以在此执行相应操作 } else { // 权限被拒