安卓开发中申请使摄像头和相册存储权限时,两个权限访问的代码写在一块,在应用登录时始终只能弹出第一个,第二个权限无法弹出也无法使用该如何解决?
这是oncreate代码片段
安卓开发中申请使摄像头和相册存储权限时,两个权限访问的代码写在一块,在应用登录时始终只能弹出第一个,第二个权限无法弹出也无法使用该如何解决?
中午好🌞🌞🌞
本答案参考ChatGPT-3.5
针对这个问题,我有以下解决方案:
在代码中分别申请两个权限。可以先申请摄像头权限,当获取到摄像头权限后,再去申请相册权限。这样可以保证两个权限都能申请成功。具体代码可以参考下面的示例:
private void requestCameraPermission() {
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.CAMERA},
CAMERA_PERMISSION_REQUEST_CODE);
}
private void requestStoragePermission() {
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.READ_EXTERNAL_STORAGE},
STORAGE_PERMISSION_REQUEST_CODE);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case CAMERA_PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 获取了摄像头权限,继续申请相册权限
requestStoragePermission();
}
break;
case STORAGE_PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 获取了相册权限,可以开始使用相关功能
}
break;
default:
break;
}
}
在应用启动时,同时申请摄像头和相册权限。这样用户在登录时只需要一次授权即可。具体代码可以参考下面的示例:
private void requestCameraAndStoragePermission() {
ActivityCompat.requestPermissions(MainActivity.this, new String[] {Manifest.permission.CAMERA,
Manifest.permission.READ_EXTERNAL_STORAGE}, CAMERA_AND_STORAGE_PERMISSION_REQUEST_CODE);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case CAMERA_AND_STORAGE_PERMISSION_REQUEST_CODE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED) {
// 获取了摄像头和相册权限,可以开始使用相关功能
}
break;
default:
break;
}
}