问题:
java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/video/media from pid=5937, uid=10101 requires android.permission.READ_EXTERNAL_STORAGE....
解决方法:
6.0或以上版本需要动态申请读写权限
AndroidManifest.xml:
读取权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
/**
* 解决Android 6.0 或以上版本不能读取外部存储权限的问题,哪里需要读写SD卡的权限,就调用这个方法,必须在一个Activity里
* @param activity
* @return
*/
public static boolean isGrantExternalRW(Activity activity) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && activity.checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED){
activity.requestPermissions(new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
},1);
return false;
}
return true;
}
class MyOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
default:
isGrantExternalRW(MainActivity.this); //跳转到下一个页面,下一个页面需要读写SD卡权限,就可以调用该方法
position = 0;
break;
case R.id.rb_audio:
position = 1;
break;
case R.id.rb_net_video:
position = 2;
break;
case R.id.rb_net_audio:
position = 3;
break;
}
setFragment();
}
}