2015-10-22 9 views
3

Я пытаюсь получить путь к файлу из своего видео uri.Как получить видео Путь к файлу из uri

Я прошел со следующими ссылками, но по-прежнему сталкивается этот вопрос:

get-filename-and-path-from-uri-from-mediastore

get-file-path-from-uri-from-video-chooser

Ниже мой код:

 Uri imageUri = data.getData(); 
     String[] proj = { MediaStore.Audio.Media.DATA }; 
     Cursor cursor = PreferenceHelper.getContext().getContentResolver().query(imageUri, proj, null, null, null); 
     int column_index = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA); 
     cursor.moveToFirst(); 
     String filePath = cursor.getString(column_index); 
     sendVideo(activity, filePath, windowId, isChatroom); 

содержание: // ком .android.providers.media.documents/document/video% 3A1142

Но всегда получайте путь к файлу null.

Ниже мои журналы:

10-22 13:09:44.189 21604-21604/com.testapp.chat W/System.err: java.lang.NullPointerException 
10-22 13:09:44.190 21604-21604/com.testapp.chat W/System.err:  at java.io.File.fixSlashes(File.java:185) 
10-22 13:09:44.191 21604-21604/com.testapp.chat W/System.err:  at java.io.File.<init>(File.java:134) 
10-22 13:09:44.191 21604-21604/com.testapp.chat W/System.err:  at com.inscripts.plugins.VideoSharing.sendVideo(VideoSharing.java:125) 
10-22 13:09:44.191 21604-21604/com.testapp.chat W/System.err:  at com.inscripts.plugins.VideoSharing.sendVideo(VideoSharing.java:219) 
10-22 13:09:44.192 21604-21604/com.testapp.chat W/System.err:  at com.inscripts.plugins.VideoSharing.sendVideoOneOnOne(VideoSharing.java:104) 
10-22 13:09:44.193 21604-21604/com.testapp.chat W/System.err:  at com.inscripts.activities.SingleChatActivity.onButtonClick(SingleChatActivity.java:617) 
10-22 13:09:44.193 21604-21604/com.testapp.chat W/System.err:  at com.inscripts.custom.CustomAlertDialogHelper.onClick(CustomAlertDialogHelper.java:65) 
10-22 13:09:44.193 21604-21604/com.testapp.chat W/System.err:  at android.view.View.performClick(View.java:4456) 
10-22 13:09:44.194 21604-21604/com.testapp.chat W/System.err:  at android.view.View$PerformClick.run(View.java:18465) 

ответ

4

Здравствуйте я также сталкиваются с той же проблемой, но здесь является метод

public static String getPath(final Context context, final Uri uri) { 

    if (DEBUG) 
     Log.d(TAG + " File -", 
       "Authority: " + uri.getAuthority() + 
         ", Fragment: " + uri.getFragment() + 
         ", Port: " + uri.getPort() + 
         ", Query: " + uri.getQuery() + 
         ", Scheme: " + uri.getScheme() + 
         ", Host: " + uri.getHost() + 
         ", Segments: " + uri.getPathSegments().toString() 
       ); 

    final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; 

    // DocumentProvider 
    if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { 

     // ExternalStorageProvider 
     else if (isExternalStorageDocument(uri)) { 
      final String docId = DocumentsContract.getDocumentId(uri); 
      final String[] split = docId.split(":"); 
      final String type = split[0]; 

      if ("primary".equalsIgnoreCase(type)) { 
       return Environment.getExternalStorageDirectory() + "/" + split[1]; 
      } 

      // TODO handle non-primary volumes 
     } 

     // MediaProvider 
     else if (isMediaDocument(uri)) { 
      final String docId = DocumentsContract.getDocumentId(uri); 
      final String[] split = docId.split(":"); 
      final String type = split[0]; 

      Uri contentUri = null; 
      if ("image".equals(type)) { 
       contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI; 
      } else if ("video".equals(type)) { 
       contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; 
      } else if ("audio".equals(type)) { 
       contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; 
      } 

      final String selection = "_id=?"; 
      final String[] selectionArgs = new String[] { 
        split[1] 
      }; 

      return getDataColumn(context, contentUri, selection, selectionArgs); 
     } 
    } 
    // MediaStore (and general) 
    else if ("content".equalsIgnoreCase(uri.getScheme())) { 

     // Return the remote address 
     if (isGooglePhotosUri(uri)) 
      return uri.getLastPathSegment(); 

     return getDataColumn(context, uri, null, null); 
    } 
    // File 
    else if ("file".equalsIgnoreCase(uri.getScheme())) { 
     return uri.getPath(); 
    } 

    return null; 
} 

, которые я получаю от this url

-> другие методы могут быть получены из этого ФАЙЛЫ UTILS file enjoy co ding :) -> и он доставит мне полный путь видео от ури, надеюсь, он вам поможет :)

+0

спасибо, его рабочий штраф –

+0

Это потрясающе! Я, вероятно, пробовал предложения от 10 разных должностей, прежде чем найти ваш ответ. Дал бы ему +10, если бы мог. – wildcat12

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