Как получить URI файла для загрузки файла на сервер? - PullRequest
0 голосов
/ 18 июня 2020

Я получаю аудиофайлы из указанной папки c и привязываю их к recyclerview. теперь мне нужен Uri каждого файла, чтобы я мог загружать их по одному. Я использую курсор для получения файлов. ниже мой код:

   Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String[] projection = {MediaStore.Audio.AudioColumns.SIZE,MediaStore.Audio.AudioColumns.TITLE,android.provider.MediaStore.Audio.AudioColumns.DATA,
            MediaStore.Audio.AudioColumns.DURATION,MediaStore.Audio.AudioColumns.TITLE};


    Cursor c = context.getContentResolver().query(uri, projection, MediaStore.Audio.Media.DATA + " like ? ", new String[]{"%/storage/emulated/0/Call%"},null);

    if (c != null ) {
        for (int i = 0; i < 50 && c.moveToNext(); ++i) {
            // Create a model object.
            POJO audioModel = new POJO();
            long id = c.getLong(4);
            String SIZE = c.getString(0);     // Retrieve path.
            String NAME = c.getColumnName(1); // Retrieve name.
            String PATH = c.getString(2);     // Retrieve album name.
            String DURATION = c.getString(3); // Retrieve artist name.

            Uri contentUri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,id);

            audioModel.setSize(SIZE);
            audioModel.setName(NAME);
            audioModel.setPath(PATH);
            audioModel.setDuration(DURATION);
            audioModel.setUri(contentUri);

            Log.d("#", String.valueOf(contentUri));


            arrayListFile.add(audioModel);
        }
        c.close();
    }
     return arrayListFile;

в contentUri, я получаю это (content: // media / external / audio / media / 0). и то, что я хочу, это content: //com.android.providers.media.documents/document/xyz.mp3. как я могу сделать ??

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Пожалуйста, подумайте об использовании (MediaStore.Audio.Media.DATA должен быть частью вашего проецирования):

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA);
Uri yourFileUri = Uri.parse(cursor.getString(column_index));
0 голосов
/ 18 июня 2020

почему не использовать MediaStore.Files.FileColumns.DATA? путь также можно использовать для загрузки на сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...