运行时权限请求后,Android API23权限仍然被拒绝

时间:2016-07-12 23:56:52

标签: java android bitmap android-6.0-marshmallow android-permissions

我现在正在我的应用中提取位图。它需要READ_EXTERNAL_STORAGE权限。由于我使用Android 6(API23),我有  1.在Android.manifest中声明此类权限为

<uses-permission tools:node="replace" android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission tools:node="replace" android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 在运行时检查权限(使用 ActivityCompat.requestPermissions(...) 在MainActivity中然后是另一个 onRequestPermissionsResult(..) 我得到这样的许可后回调处理这些东西)。
  2. 但是我仍然无法获取我想要的位图,错误表明我没有足够的权限。

    我还检查了有关我应用的权限的手机应用设置,并打开和关闭了存储&#34;选项,弹出一个对话框,请求权限,但是,在允许访问应用程序后,我得到了同样的错误:

    07-12 14:54:59.255 31895 31911 E DatabaseUtils:java.lang.SecurityException:Permission Denial:读取com.android.providers.media.MediaProvider uricontent:// media / external / images / media from pid = 18177,uid = 10077需要android.permission.READ_EXTERNAL_STORAGE或grantUriPermission()

    MainActivity

    String[] perms = {"android.permission.READ_EXTERNAL_STORAGE"};
    int permsRequestCode = 200;
    

    OnCreate

    ActivityCompat.requestPermissions(this, perms, permsRequestCode);
    

    MainActivity 中的回调

    @Override
        public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults){
            super.onRequestPermissionsResult(permsRequestCode, permissions, grantResults);
    
            switch(permsRequestCode){
    
                case 200:
                    Log.e(TAG, "checking permissions");
                    if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED&&isPreview){
                        bitmap.getPixels(left, 0,0,0,0,w/2,h);
                        bitmap.getPixels(right, 0,0,w/2,0,w/2,h);
                        Log.e(TAG, "left and right stored");
                    };
                    //writeAccepted = grantResults[1]==PackageManager.PERMISSION_GRANTED;
                    break;
            }
        }
    

    我还有什么遗漏吗?

0 个答案:

没有答案