首页 > 解决方案 > 权限不适用于 android studio 中的 android 10

问题描述

目前,我正在尝试构建一个需要 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;
}

onCreate()方法中,我使用以下内容:

    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, permissions, 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 中,它无法从存储中读取数据,也无法存储它。

有谁知道这背后的原因?

我也将权限添加到 Manifest 文件中。

标签: androidandroid-permissionsandroid-10.0

解决方案


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">

推荐阅读