android 申请相机权限没有弹出授权对话框怎么办?-灵析社区

UX_siri

android api level 29的设备上**首次安装申请相机权限** ,没有弹出授权的对话框怎么办? 已经在清单文件中声明相机权限 并且声明了与相机应用的交互规则: 然后在需要使用相机的地方也动态申请了相机授权,但是死活不弹出相机授权对话框(**应用首次安装或者卸载重装都如此** )。 public class TestActivity extends AppCompatActivity { private ActivityResultLauncher faceActivityResultLauncher; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // ... 省略代码 this.faceActivityResultLauncher = this.registerForActivityResult( new ActivityResultContracts.StartActivityForResult(), result -> { if (result.getResultCode() != Activity.RESULT_OK) { UiCommon.toast(this, "相机拍摄失败"); return ; } this.updateFace(this.face); } ); // 申请授权 ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.CAMERA}, TEST_CODE); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); boolean isGranted = PermissionCommon.permissionResultHandle(this, requestCode, permissions, grantResults); switch (requestCode) { case TEST_CODE: if (!isGranted) { // 省略部分代码 ... Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); this.faceActivityResultLauncher.launch(intent); } break; default: break; } } } 这是为什么?该如何解决上述问题?

阅读量:20

点赞量:0

问AI
问题已解决,是连续申请权限导致的。上述代码没贴完整,问题如下: public boolean checkPermissions() { PermissionCommon.requestStoragePermissions(this.activity); PermissionCommon.requestCameraPermissions(this.activity); if (!PermissionCommon.isHasStoragePermission(this.activity)) { UiCommon.toast(this.activity, "无文件存取权限"); return false; } if (!PermissionCommon.isHasCameraPermission(this.activity)) { UiCommon.toast(this.activity, "无相机权限"); return false; } return true; } 将权限合成一下一次性申请就可以了。 public boolean checkPermissions() { // 将存储和拍照权限合在一起申请 String[] permissions = new string[] {...}; PermissionCommon.requestPermissions(this.activity, permissions); if (!PermissionCommon.isHasPermissions(this.activity, permissions)) { UiCommon.toast(this.activity, "部分或全部权限未授予"); return false; } return true; }