2017-02-09 9 views
0

Я пытаюсь просмотреть/открыть несколько файлов, загруженных в хранилище приложений, но по какой-то причине у порожденной активности действия не было разрешения на откройте файл. Ниже fileEntity.getFile() возвращает экземпляр файла.Намерение с видом действия не имеет разрешения на просмотр файла

Uri uri = Uri.fromFile(fileEntity.getFile()); 
Debugger.message("Viewing file of type " + file.mime + " at " + uri); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setDataAndType(uri, fileEntity.mime); 
startActivity(intent); 

Выходы:

10: 44: 10,161 5660 com.app VERBOSE Смотрит файл типа приложения/PDF в файл: ///data/user/0/com.app/files /1_lol.pdf

10: 44: 10,421 2551 # 2551 ОШИБКА DisplayData openFd: java.io.FileNotFoundException: отказано в

10: 44: 10.421 2551 # 2551 ОШИБКА PdfLoader не удается загрузить файл (Безразлично» t open) Отображаемые данные [PDF: 1_lol.pdf] + FileOpenable, uri: file: // /data/user/0/com.app/files/1_lol.pdf

Это, как я сохранить файл первоначально, который, кажется, работают:

File file = fileEntity.getFile(); 
FileOutputStream fos = new FileOutputStream(file); 
HttpResponse response = getClient().rawRequest(fileEntity.url); 

response.getEntity().writeTo(fos); 
response.getEntity().consumeContent(); 
fos.flush(); 
fos.close(); 

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

Я что-то упустил или не понял, как работает внутреннее хранилище?

У меня есть эти разрешения в манифесте android;

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Edit Так, из всех примеров в документации андроида мне не удалось найти какие-либо ресурсы о FileProvider в AppCompat библиотеки. После instructions here помогло решить проблему.

+0

'файл: /// data/user/0/com.app' является частным хранилищем приложений – Selvin

+0

@Selvin Да, именно это я и стремился. Однако я не думал, что это предотвратит просмотр документов PDF, если я создам действие намерения. – Daniel

+1

использовать поставщик файлов ... – Selvin

ответ

-2

Начиная с Android 6.0 (API уровня 23), вам необходимо запросить разрешение у пользователя. Нравится: https://developer.android.com/training/permissions/requesting.html

+1

Прошу прощения, я забыл добавить разрешения на мой оригинальный вопрос. Я добавил разрешения, которые у меня есть. Как говорится в этом вопросе, я могу писать файлы, но не открывать их. – Daniel

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

  • Нет связанных вопросов^_^