2017-01-13 12 views
1

Я хочу, чтобы получить реальный путь к видео из URIКак получить реальный путь выбранного видео с устройства

открыть галерею видео с startActivityForResult

startActivityForResult(
         Intent.createChooser(
           new Intent(Intent.ACTION_GET_CONTENT) 
           .setType("video/*"), "Choose Video"), 
         REQUEST_VIDEO 
         ); 

и я получаю его в onActivityResult

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if(resultCode == RESULT_OK){ 
      if(requestCode == REQUEST_VIDEO){ 

       Uri uri = data.getData(); 
       String realpath = getRealPathFromURI(getContext(),uri); 

      } 
} 

В getRealPathFromUri вот так;

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

Но realpath всегда возвращает null;

Я ищу для этого, но по-прежнему возвращает нуль

Она Токи с sdk_version?

или он изменен для MediaStore.Images.Media.DATA по MediaStore.Video.Media.DATA?

Я застрял здесь, не имея понятия, любезно предлагаю! Любая помощь будет очень ценной.

- Спасибо!

+0

смог найти решение для этого были вы? Не могли бы вы обновить это. – Choxmi

ответ

0

Попробуйте это,

public static String getRealVideoPathFromURI(ContentResolver contentResolver, 
               Uri contentURI) { 
     Cursor cursor = contentResolver.query(contentURI, null, null, null, 
       null); 
     if (cursor == null) 
      return contentURI.getPath(); 
     else { 
      cursor.moveToFirst(); 
      int idx = cursor.getColumnIndex(Video.VideoColumns.DATA); 
      try { 
       return cursor.getString(idx); 
      } catch (Exception exception) { 
       return null; 
      } 
     } 
    } 
+0

Спасибо, но все равно возвращаем null; –

+0

В этом случае я уже пробовал это –

+0

В onActivityResult измените это, String video = getRealVideoPathFromURI (getContentResolver(), videoUri); –

0

После того как вы Uri, вы можете получить абсолютный путь к файлу так:

File myFile = new File(uri.getPath()); 
myFile.getAbsolutePath(); 
+0

я пытался, но у меня есть вопрос, Он возвращает/документ/видео: #### (#### это номер) Я думаю, что это не Realpath из видеофайла, потому что, когда я вхожу в диспетчер файлов и вижу информацию о выбранных видеофайлах, возвращает/storage/0/emulated/... вот так Я хочу, чтобы этот путь –

+0

внутри 'onActivityResult()' что вы получаете при регистрации: 'data.getData(). toString()'? дайте мне знать – OBX

+0

Uri uri = data.getData(); Строка path = uri.getPath(). ToString(); log сказал,/document/video: 2745 –