我现在正在我的应用中提取位图。它需要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" />
但是我仍然无法获取我想要的位图,错误表明我没有足够的权限。
我还检查了有关我应用的权限的手机应用设置,并打开和关闭了存储&#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;
}
}
我还有什么遗漏吗?