Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android6.0以上不能讀取外部存儲權限問題

android6.0以上不能讀取外部存儲權限問題

編輯:關於Android編程

通過內容提供者獲取手機sdcard本地視頻時,

  /**
     * 從本地的sdcard得到數據
     * //1.遍歷sdcard,後綴名
     * //2.從內容提供者裡面獲取視頻
     * //3.如果是6.0的系統,動態獲取讀取sdcard的權限
     */
    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);//藝術家
                        mediaItem.setArtist(artist);



                    }

                    cursor.close();


                }


                //Handler發消息
                handler.sendEmptyMessage(10);


            }
        }.start();

    }

    /**
     * 解決安卓6.0以上版本不能讀取外部存儲權限的問題
     * @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;
    }

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved