在下载文件后,在我的应用程序中Android N
之前,我像这样打开它:
Intent myIntent = new Intent(Intent.ACTION_VIEW);
File myFile = new File(result);
String mime = URLConnection.guessContentTypeFromStream(new FileInputStream(myFile));
myIntent.setDataAndType(Uri.fromFile(myFile), mime);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
由于
Android N
如果我使用此代码,则会得到一个FileUriExposedException
,如建议的here,我应该使用FileProvider并获得如下路径:Uri contentUri = getUriForFile(getContext(), "com.mydomain.fileprovider", newFile);
然后使用以下命令打开它:
ParcelFileDescriptor.openFile(Uri uri,String mode)
如建议的here所示为
Uri: A content URI associated with a file, as returned by getUriForFile().
但是在IDE中,如果我执行
ParcelfileDescriptor.open...
,则没有方法openFile()
仅
open()
带有File作为参数,没有uri。那么如何在Android N中打开文件?注意:我不想使用我的应用程序打开文件。例如,如果我下载了pdf,我想使用手机上已安装的应用程序将其打开。
最佳答案
由于Android N,如果我使用此代码,则会得到FileUriExposedException,如此处建议的那样,我应该使用FileProvider
那部分是正确的。从Uri
获得的getUriForFile()
然后进入ACTION_VIEW
Intent
。因此,您得到类似以下内容的结果:
File myFile = new File(result);
Uri uri = FileProvider.getUriForFile(context, YOUR_AUTHORITY, myFile);
Intent myIntent = new Intent(Intent.ACTION_VIEW, uri);
myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
关于android - 在Android N中打开下载的文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37895188/