如何获得访问android M.画廊的权限?

时间:2016-10-05 06:30:17

标签: java android

我有这个应用程序,它将选择图像到图库并使用Imageview将其显示给测试。我的问题是它不能在Android M上工作。我可以选择图像,但不会在我的测试中显示。他们说我需要获得访问Android M图像的权限但不知道如何。请帮忙。

2 个答案:

答案 0 :(得分:17)

从Android 6.0(API级别23)开始,用户在应用运行时向应用授予权限,而不是在安装应用时授予权限。

类型1 - 当您的应用请求权限时,系统会向用户显示一个对话框。当用户响应时,系统会调用您应用的onRequestPermissionsResult()方法,并向其传递用户响应。您的应用必须覆盖该方法才能确定是否已授予权限。回调传递的是您传递给requestPermissions()的相同请求代码。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

类型2 - 如果您想在一个地方背靠背提供运行时权限,那么您可以按照以下链接

Android 6.0 multiple permissions

在Manifest中添加对您的要求的许可

{{1}}

注意 - 如果Manifest.permission.READ_EXTERNAL_STORAGE产生错误,请将其替换为android.Manifest.permission.READ_EXTERNAL_STORAGE。

==&gt; 如果您想了解有关运行时权限的更多信息,请点击以下链接

https://developer.android.com/training/permissions/requesting.html

答案 1 :(得分:0)

public void pickFile() {
        int permissionCheck = ContextCompat.checkSelfPermission(getActivity(),
                CAMERA);
        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(
                    getActivity(),
                    new String[]{CAMERA},
                    PERMISSION_CODE
            );
            return;
        }
        openCamera();
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
                                           @NonNull int[] grantResults) {
        if (requestCode == PERMISSION_CODE) {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                openCamera();
            }
        }
    }

    private void openCamera() {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, CAMERA_CODE);
    }


<uses-permission android:name="android.permission.CAMERA" />