解決android6.0以上不能讀取外部存儲權(quán)限的問題
更新時間:2018年08月01日 09:39:26 作者:FansyMeng
今天小編就為大家分享一篇解決android6.0以上不能讀取外部存儲權(quán)限的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
通過內(nèi)容提供者獲取手機(jī)sdcard本地視頻時,
/**
* 從本地的sdcard得到數(shù)據(jù)
* //1.遍歷sdcard,后綴名
* //2.從內(nèi)容提供者里面獲取視頻
* //3.如果是6.0的系統(tǒng),動態(tài)獲取讀取sdcard的權(quán)限
*/
private void getDataFromLocal() {
new Thread(){
@Override
public void run() {
super.run();
// isGrantExternalRW((Activity) context);
// SystemClock.sleep(2000);
mediaItems = new ArrayList<>();
ContentResolver resolver = context.getContentResolver();
Uri uri = 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,//歌曲的演唱者
};
Cursor cursor = resolver.query(uri, objs, null, null, null);
if(cursor != null){
while (cursor.moveToNext()){
MediaItem mediaItem = new MediaItem();
mediaItems.add(mediaItem);//寫在上面
String name = cursor.getString(0);//視頻的名稱
mediaItem.setName(name);
long duration = cursor.getLong(1);//視頻的時長
mediaItem.setDuration(duration);
long size = cursor.getLong(2);//視頻的文件大小
mediaItem.setSize(size);
String data = cursor.getString(3);//視頻的播放地址
mediaItem.setData(data);
String artist = cursor.getString(4);//藝術(shù)家
mediaItem.setArtist(artist);
}
cursor.close();
}
//Handler發(fā)消息
handler.sendEmptyMessage(10);
}
}.start();
}
/**
* 解決安卓6.0以上版本不能讀取外部存儲權(quán)限的問題
* @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;
}
以上這篇解決android6.0以上不能讀取外部存儲權(quán)限的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android?RxJava與Retrofit結(jié)合使用詳解
RxJava和Retrofit的結(jié)合使用估計已經(jīng)相當(dāng)普遍了,自己工作中也是一直都在使用。在使用的過程中我們都會對其進(jìn)行封裝使用,GitHub上也有很多封裝好的項(xiàng)目可以直接拿來使用,其實(shí)對于開源框架的二次封裝有時候針對不同的業(yè)務(wù)邏輯封裝的過程中也多多少少有些不同2023-03-03
Android中實(shí)現(xiàn)下載和解壓zip文件功能代碼分享
這篇文章主要介紹了Android中實(shí)現(xiàn)下載和解壓zip文件功能代碼分享,本文直接給出了實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03
關(guān)于Android Activity之間跳轉(zhuǎn)問題(Intent)
這篇文章主要介紹了Android Activity之間跳轉(zhuǎn)Intent,當(dāng)一個Acitivity需要啟動另一個Activity時,通過Intent來表達(dá)自己的意圖,告知系統(tǒng)啟動哪個Activity,本文給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10

