欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 6.0 访问图库时,报错 requires android.permission.READ_EXTERNAL_STORAGE异常

程序员文章站 2022-08-11 09:50:15
android 6.0 访问图库时,报错 requires android.permission.read_external_storage异常。 代码如下: /**...

android 6.0 访问图库时,报错 requires android.permission.read_external_storage异常。

代码如下:

   /**
     * 打开图库
     * @param context
     * @param requestcode
     */
    public static void opengallery(activity context, int requestcode) {
        intent intent = new intent(intent.action_pick, null);
        intent.setdataandtype(mediastore.images.media.external_content_uri,"image/*");
        context.startactivityforresult(intent, requestcode);
    }

以上代码很简单,使用intent开启图库,挑选图片,运行效果很不理想。

android 7.0模拟器上,报错:

11-10 10:07:02.241 4449-4468/? e/databaseutils: writing exception to parcel
       java.lang.securityexception: permission denial: reading com.android.providers.media.mediaprovider   uri content://media/external/file from pid=4337, uid=10049 requires android.permission.read_external_storage 
       , or granturipermission()

       at android.content.contentprovider.enforcereadpermissioninner(contentprovider.java:608)
        at android.content.contentprovider$transport.enforcereadpermission(contentprovider.java:483)
        at android.content.contentprovider$transport.query(contentprovider.java:212)
        at android.content.contentprovidernative.ontransact(contentprovidernative.java:112)
        at android.os.binder.exectransact(binder.java:565)

在androidmanifest.xml中添加权限:

  

其次,在android 6.0及其以上,需要动态赋予权限。

注意点

若是程序中已经赋予写入权限,则不需要在写读取权限。写入权限已经包含了读取权限。