2014-11-17 1 views
0

я получаю URI при попытке выбрать файл:.Как преобразовать URI файла в путь к файлу?

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("file/*"); 
    startActivityForResult(intent,FILE_MANAGER_REQUEST_CODE); 

В ActivityOnResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Log.d("FilePick", "request code = " + requestCode + ", resultCode = " + resultCode); 
    Log.d("FilePick", "Intent = " + data != null ? data.getData().getPath() : null); 

    super.onActivityResult(requestCode, resultCode, data); 
} 

Когда я выбрать файл data.getData() GetPath() возвращает

/внешний/файл/15499

Как преобразовать его в реальный путь к файлу?

Примечание: Я прочитал это темы:

Но я думаю, что он доступен ОНЛ, у для медиа-контента. Не для файлов.

+0

'String path = yourURI.getPath();' –

ответ

0

Нет «реального пути к файлу». A Uri is not a File.

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

+0

Мне нужен только путь к файлу, а не контент. –

+0

@SergeyShustikov: Ваше утверждение сродни тому, что вы хотите «просто указать путь к файлу» для URL-адреса HTTP. Талантливые программисты знают, что у вас нет прямого доступа к файлу на веб-сервере, но вместо этого нужно открыть «InputStream» и загрузить файл, на который указывает этот URL. Значения 'Uri' почти одинаковы. Нет никакого требования, чтобы какой-либо «ContentProvider» дал вам «Uri», который указывает на файл, не говоря уже о файле, к которому вы можете получить доступ, не говоря уже о некотором детерминированном преобразовании между «Uri» и локальным файловым путем, который вы можете доступ. – CommonsWare

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