我已经通过程序编写了一个CSV文件,我希望用户可以使用其设备上已安装的应用程序打开这个CSV文件。
我有以下内容:
当我运行以上代码时,我只看到最近文件浏览器(并不显示文件),而不是应用程序选择屏幕,允许用户选择要使用的应用程序来打开文件。
如果我进入我的设备文件浏览器应用程序(Solid Explorer)并选择该应用程序,它会为我提供支持CSV格式(Google文档或Excel)的应用程序列表。
我有以下内容:
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);
当我运行以上代码时,我只看到最近文件浏览器(并不显示文件),而不是应用程序选择屏幕,允许用户选择要使用的应用程序来打开文件。
如果我进入我的设备文件浏览器应用程序(Solid Explorer)并选择该应用程序,它会为我提供支持CSV格式(Google文档或Excel)的应用程序列表。
android.content.ActivityNotFoundException: No Activity found to handle 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 }
- BoardyaddCategory(Intent.CATEGORY_OPENABLE)
。感谢您的帮助。 - BoardyACTION_VIEW
通常只与默认类别一起使用,而当你调用startActivity()
方法时,默认类别会被添加进去。 - CommonsWareACTION_VIEW
- 这是我在我的回答中推荐的,自API级别1以来就存在了。 - CommonsWare