2017-04-11 129 views
1

我已经编写了一个CSV编程,我想让用户能够在他们已经安装在他们的设备上的应用程序中打开CSV。以编程方式在Android中打开一个CSV文件

我有以下几点:

File file = new File(Environment.getExternalStorageDirectory(), "My_App_Dir/" + fileName); 
Intent csvIntent = new Intent(Intent.ACTION_OPEN_DOCUMENT); 
csvIntent.addCategory(Intent.CATEGORY_OPENABLE); 
csvIntent.setDataAndType(FileProvider.getUriForFile(getActivity(), getActivity().getApplicationContext().getPackageName() + ".provider", finalFile), "text/csv"); 
csvIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
csvIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getActivity().startActivity(csvIntent); 

当我运行上面的代码,我得到的是最近的文件浏览器中(不显示文件),而不是应用程序选择屏幕允许用户选择他们想用来打开文件的应用程序。

如果我去我的设备文件浏览器应用程序(固体浏览器),并选择应用程序,它提供了一个能够支持CSV(Google文档或Excel)的应用程序列表。

感谢您的帮助,您可以提供

回答

1

使用ACTION_VIEWACTION_OPEN_DOCUMENT相当于桌面操作系统或Web浏览器的“文件打开”对话框。

+0

谢谢,我已经给出了一个尝试,但它现在抛出一个ActivityNotFoundException。 'android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.VIEW cat = [android.intent.category.OPENABLE] dat = content://com.my_company.my_app.provider/external_files/ My_App_Dir/11042017_233342_resultset.csv typ = text/csv flg = 0x10000001}' – Boardy

+0

Ah对它进行了排序,完成了你所做的,但我需要删除'addCategory(Intent.CATEGORY_OPENABLE)'。感谢您的帮助 – Boardy

+0

@Boardy:哦,是的,对,对不起,错过了。 'ACTION_VIEW'通常只用于默认类别,并且在调用'startActivity()'时默认添加。 – CommonsWare