2013-03-28 5 views
3

Я пытаюсь выбрать видео, выбирая и отображая видео, отлично работает, но когда я пытаюсь получить полный путь к видеофайлу, я получаю неправильный путь.Получить полный путь к видеофайлу из uri

В следующем фрагменте кода я пытаюсь получить полный путь к файлу:

Uri uri = Uri.parse(url); 
File file = new File((uri.getPath())); 

А потом, когда я установил многосекционные сущности filebody я передать его в file.toString().

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

03-28 12:43:27.129: W/System.err(6018): java.io.FileNotFoundException: /content:/media/external/video/media/32398: open failed: ENOENT (No such file or directory) 
03-28 12:43:27.157: W/System.err(6018):  at libcore.io.IoBridge.open(IoBridge.java:416) 
03-28 12:43:27.157: W/System.err(6018):  at java.io.FileInputStream.<init>(FileInputStream.java:78) 
03-28 12:43:27.157: W/System.err(6018):  at org.apache.http.entity.mime.content.FileBody.writeTo(FileBody.java:92) 
03-28 12:43:27.165: W/System.err(6018):  at org.apache.http.entity.mime.HttpMultipart.doWriteTo(HttpMultipart.java:206) 
03-28 12:43:27.165: W/System.err(6018):  at org.apache.http.entity.mime.HttpMultipart.writeTo(HttpMultipart.java:224) 
03-28 12:43:27.169: W/System.err(6018):  at org.apache.http.entity.mime.MultipartEntity.writeTo(MultipartEntity.java:183) 
03-28 12:43:27.169: W/System.err(6018):  at org.apache.http.impl.entity.EntitySerializer.serialize(EntitySerializer.java:97) 
03-28 12:43:27.169: W/System.err(6018):  at org.apache.http.impl.AbstractHttpClientConnection.sendRequestEntity(AbstractHttpClientConnection.java:162) 

ответ

3

вам нужно будет запросить MediaStore.Images.Media.DATA колонку, чтобы получить реальный путь файла, используя URI из MediaStore.Images.Media ContentProvider.

см следующего пост для получения filename and path from uri from mediastore

+0

@ user1940676: просто используйте запрос вместо управляемогоQuery –

+0

@ user1940676: или см. Ответ dextor в том же сообщении –

+0

Это MediaStore.Videos Я верю –

0

Получить путь к файлу из URI ::

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(); 
     } 
     } 
    } 
0

Я перепробовал все различные ответы на StackOverflow относительно принятия Юриса и превращая их в пути к файлам/файлов, и ни один из них работали. Я спросил, и похоже, что это поведение больше не поддерживается. Было высказано предположение, что вместо этого вам нужен доступ к видео/изображению: «Просто откройте URI напрямую с помощью openInputStream ContentResolver».

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