2014-12-25 1 views
0

Я использую этот код для достижения «Открыть в» функции для файлов класса (java.io.File):Использование Intent.ACTION_VIEW вместе с классом DocumentFile

... 
MimeTypeMap mime = MimeTypeMap.getSingleton(); 
String type = mime.getMimeTypeFromExtension(fileExtension); 

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(file), type); // Standard File class    
startActivity(Intent.createChooser(intent, "blabla")); 
... 

Я хотел бы сделать то же самое с классом DocumentFile (android.support.v4.provider.DocumentFile):

... 
MimeTypeMap mime = MimeTypeMap.getSingleton(); 
String type = mime.getMimeTypeFromExtension(fileExtension); 

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setDataAndType(documentFile.getUri(), type); // DocumentFile class   
startActivity(Intent.createChooser(intent, "blabla")); 
... 

Однако, это не кажется ни одного приложения (даже на Android 5) способен обрабатывать URI - documentFile.getUri().

Неужели я что-то не так?

ответ

2

Это работает для меня:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(docFile.getUri(), type); 
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
+0

Да, это действительно работает! С одним странным исключением в отношении видеофайлов (нет видео, воспроизводится только звуковая дорожка), однако это может быть связано с тем, кто знает что. Благодаря! – Metatron

+0

Добро пожаловать, я потратил некоторое время, пытаясь заставить его работать. Я только пробовал это с изображениями, поэтому понятия не имею. – kuato