2016-12-22 8 views
1

Я хочу прикреплять изображения или видеофайлы из хранилища Android. Когда я выбираю видео из галереи, он возвращает URL-адрес uri.Как получить путь к файлу из URI содержимого для видеофайлов?

Как получить путь к файлу с расширением из URI содержимого?


Я попытался следующий код, но он возвращает нуль в леденец:

void pickVideo() { 
    Intent videoIntent = new Intent(Intent.ACTION_GET_CONTENT); 
    videoIntent.setType("video/*"); 
    startActivityForResult(videoIntent, PICK_VIDEO_FILE); 
} 


@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    try { 
     if (resultCode != Activity.RESULT_OK) 
      return; 

     switch (requestCode) { 
      case PICK_VIDEO_FILE: 
       Uri videoUri = data.getData(); 
       String path = getRealPathFromURI(getContext(), videoUri); 
       Log.d("Video uri path", "path" + path); 
       if (mChooseFileDialogListener != null) { 
        mChooseFileDialogListener.onVideoClick(videoUri, HealthRecordViewModel.FILE_TYPE_VIDEO); 
       } 
       break; 
     } 
    } 
} 


public String getRealPathFromURI(Context context, Uri contentUri) { 
    Cursor cursor = null; 
    try { 
     String[] proj = { MediaStore.Video.Media.DATA }; 
     cursor = context.getContentResolver().query(contentUri, proj, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } finally { 
     if (cursor != null) { 
      cursor.close(); 
     } 
    } 
} 

ответ

0

Как получить путь к файлу с расширением?

У вас нет. Не требуется, чтобы пользователь выбирал часть контента, которая сохраняется как файл в том месте, к которому вы имеете доступ на чтение. И нет требования, чтобы ContentProvider предлагал некоторые способы перевода Uri в путь к файлу.

Используйте ContentResolver и openInputStream() для чтения в содержании, указанном Uri.

+0

Я новичок в программировании на Android. Можете ли вы привести пример, связанный с этим? – Pulse

+0

@Pulse: getContentResolver(). OpenInputStream (videoURI) '. – CommonsWare

+0

openInputStream (uri) возвращает InputStream правильно? Как это использовать и как приложение? Я должен сохранить полученный файл, и если я нажму на сохраненный файл, он должен использовать соответствующее приложение для открытия. – Pulse

Смежные вопросы