Как получить внутреннее общее хранилище и пути к файлам SD-карт файлов документов? - PullRequest
2 голосов
/ 06 марта 2019

Я пытаюсь получить пути к файлам видео из внутреннего общего хранилища и SD-карты.

Я случайно сохранил видео в случайных папках во внутреннем общем хранилище и во внешнем хранилище.

  public ArrayList<String> getVideosPath(Activity activity,Context context)
{
    listOfAllImages = new ArrayList<String>();
    Cursor cursor;

    final String[] columns = {MediaStore.Video.Media.DATA, MediaStore.Video.Media._ID};
    final String orderBy = MediaStore.Video.Media._ID;
    //Stores all the images from the gallery in Cursor
    cursor = getContentResolver().query(
            MediaStore.Video.Media.EXTERNAL_CONTENT_URI, columns, null,
            null, orderBy);
    //Total number of images
    int count = cursor.getCount();

    //Create an array to store path to all the images
    String[] arrPath = new String[count];

    for (int i = 0; i < count; i++) {
        cursor.moveToPosition(i);
        int dataColumnIndex = cursor.getColumnIndex(MediaStore.Video.Media.DATA);

        //Store the path of the image
        arrPath[i] = cursor.getString(dataColumnIndex);


        Bitmap thumb = ThumbnailUtils.createVideoThumbnail(arrPath[i],
                MediaStore.Images.Thumbnails.MINI_KIND);

//        BitmapFactory.Options options = new BitmapFactory.Options();
//        options.inSampleSize = 4;
//        Bitmap b = BitmapFactory.decodeFile(arrPath[i], options);



        bitmap.add(thumb);
      //  drawimages_onvideo.add(thumb);
        Log.i("PATH", arrPath[i]);
        listOfAllImages.add(arrPath[i]);
    }

Хотя он получает файлы с SD-карты и памяти телефона, пути разные.

, например, например, есть 2 видеофайла, один в Android-хранилище и один на SD-карте, и путь

* 1009.* хранилище Android: /storage/emulated/0/Movies/videoplay.mp4

и

SD-карта: /storage/BBF7-A8D2/videos/videoplay.mp4

, и я получаю эти 2 файла, но пути, которые отображаются для меня, являются эти:

/storage/emulated/0/Movies/videoplay.mp4
/storage/emulated/0/Movies/videoplay.mp4

Что не так?

1 Ответ

0 голосов
/ 14 марта 2019

это дает мне файлы документов, которые мне нужны, и получает помощь от одного из стеков по ссылкам потока.

public void getDocumentspath(){


            listOfAllDocuments = new ArrayList<String>();
            Cursor cursor;
            String root_sd = Environment.getExternalStorageDirectory().toString();


            String pdf = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf");
            String doc = MimeTypeMap.getSingleton().getMimeTypeFromExtension("doc");
            String docx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("docx");
            String xls = MimeTypeMap.getSingleton().getMimeTypeFromExtension("xls");
            String xlsx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("xlsx");
            String ppt = MimeTypeMap.getSingleton().getMimeTypeFromExtension("ppt");
            String pptx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("pptx");
            String txt = MimeTypeMap.getSingleton().getMimeTypeFromExtension("txt");
            String rtx = MimeTypeMap.getSingleton().getMimeTypeFromExtension("rtx");
            String rtf = MimeTypeMap.getSingleton().getMimeTypeFromExtension("rtf");
            String html = MimeTypeMap.getSingleton().getMimeTypeFromExtension("html");
            String css = MimeTypeMap.getSingleton().getMimeTypeFromExtension("css");
          //  String js = MimeTypeMap.getSingleton().getMimeTypeFromExtension("js");
            //Table
            Uri table = MediaStore.Files.getContentUri("external");
            //Column
            String[] column = {MediaStore.Files.FileColumns.DATA};
            //Where
            String where = MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?"
                    +" OR " +MediaStore.Files.FileColumns.MIME_TYPE + "=?";
            //args
            String[] args = new String[]{pdf,doc,docx,xls,xlsx,ppt,pptx,txt,rtx,rtf,html,css};

            Cursor fileCursor = getContentResolver().query(table, column, where, args, null);

            int count = fileCursor.getCount();

            //Create an array to store path to all the documents
            String[] arrPath = new String[count];

            for (int i = 0; i < count; i++) {
                fileCursor.moveToPosition(i);
                int dataColumnIndex = fileCursor.getColumnIndex(MediaStore.Files.FileColumns.DATA);

                //Store the path of the document
                arrPath[i] = fileCursor.getString(dataColumnIndex);

                Bitmap b = ((BitmapDrawable) ResourcesCompat.getDrawable(this.getResources(), R.drawable.documentfile, null)).getBitmap();

                bitmap.add(b);
                Log.i("PATH", arrPath[i]);
                listOfAllDocuments.add(arrPath[i]);
            }


        }
...