解决android6.0以上不能读取外部存储权限的问题
通过内容提供者获取手机sdcard本地视频时,
/**
*从本地的sdcard得到数据
*//1.遍历sdcard,后缀名
*//2.从内容提供者里面获取视频
*//3.如果是6.0的系统,动态获取读取sdcard的权限
*/
privatevoidgetDataFromLocal(){
newThread(){
@Override
publicvoidrun(){
super.run();
//isGrantExternalRW((Activity)context);
//SystemClock.sleep(2000);
mediaItems=newArrayList<>();
ContentResolverresolver=context.getContentResolver();
Uriuri=MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
String[]objs={
MediaStore.Video.Media.DISPLAY_NAME,//视频文件在sdcard的名称
MediaStore.Video.Media.DURATION,//视频总时长
MediaStore.Video.Media.SIZE,//视频的文件大小
MediaStore.Video.Media.DATA,//视频的绝对地址
MediaStore.Video.Media.ARTIST,//歌曲的演唱者
};
Cursorcursor=resolver.query(uri,objs,null,null,null);
if(cursor!=null){
while(cursor.moveToNext()){
MediaItemmediaItem=newMediaItem();
mediaItems.add(mediaItem);//写在上面
Stringname=cursor.getString(0);//视频的名称
mediaItem.setName(name);
longduration=cursor.getLong(1);//视频的时长
mediaItem.setDuration(duration);
longsize=cursor.getLong(2);//视频的文件大小
mediaItem.setSize(size);
Stringdata=cursor.getString(3);//视频的播放地址
mediaItem.setData(data);
Stringartist=cursor.getString(4);//艺术家
mediaItem.setArtist(artist);
}
cursor.close();
}
//Handler发消息
handler.sendEmptyMessage(10);
}
}.start();
}
/**
*解决安卓6.0以上版本不能读取外部存储权限的问题
*@paramactivity
*@return
*/
publicstaticbooleanisGrantExternalRW(Activityactivity){
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M&&activity.checkSelfPermission(
Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){
activity.requestPermissions(newString[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
},1);
returnfalse;
}
returntrue;
}
以上这篇解决android6.0以上不能读取外部存储权限的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。