问题描述
当前,我正在尝试构建一个需要3个权限的应用:阅读,写作和摄像头。 我正在使用以下代码。
在主要活动中:
String[] permissions = new String[]{
Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE,};
private int PERMISSION_REQUEST_CODE = 10
public boolean hasPermissions(Context context,String[] permissions) {
if (context != null && permissions != null) {
for (String permission : permissions) {
if (ActivityCompat.checkSelfPermission(context,permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
}
return true;
}
if (!hasPermissions(this,permissions)) {
ActivityCompat.requestPermissions(this,permissions,PERMISSION_REQUEST_CODE);
}
下面是 onRequestPermissionResult()方法的代码:
@SuppressLint("MissingPermission")
@Override
public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode,grantResults);
if (requestCode == PERMISSION_REQUEST_CODE) {
if (!hasPermissions(this,permissions)) {
finish();
} else {
view_camera.bindToLifecycle(lifecycleOwner);
view_camera.setPinchToZoomEnabled(true);
view_camera.setFocusable(true);
}
}
}
在android 9之前一切正常,但是在android 10中,它无法从存储中读取数据,也无法存储数据。
有人知道这背后的原因吗?
解决方法
在清单 android:requestLegacyExternalStorage="true"
下添加<application
,例如
<application
android:requestLegacyExternalStorage="true"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">