在我的应用程序中,我将数据写入csv文件,然后我想让用户使用设备可能具有的某些csv阅读器应用程序来查看它。 打开阅读器应用程序的代码如下:
String dataType = "text/csv";
if(!hasCSVReader(dataType)) {
Log.i(TAG, "text/csv reader aplication was not found");
dataType = "text/*";
}
i.setDataAndType(uri, dataType);
try {
startActivity(Intent.createChooser(i, "OMW: Open history file..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "No CSV or text reader application installed.", Toast.LENGTH_SHORT).show();
}
和hasCSVReader(..)如下:
//check if dataType reader is installed
private boolean hasCSVReader(String dataType) {
PackageManager pm = getPackageManager();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setType(dataType);
return (pm.queryIntentActivities(i, PackageManager.MATCH_DEFAULT_ONLY).size() > 0);
}
在我的LG设备中,hasCSVReader(..)
返回false,因此数据类型为"text/*"
,并且可供选择的列出的应用程序之一是" Polaris Viewer 4"它设法打开csv文件。
在Samsung 3设备中hasCSVReader(..)
返回true,数据类型为"text/csv"
,列出的应用程序为" Polaris Viewer 4.1"和" OfficeSuite",但都无法打开文件。
当我将数据类型设置为"text/*"
时,我获得了更多应用程序,但没有一个能够打开文件。
请注意,使用android文件浏览器(或其名称)导航到该文件并打开它,再次列出Polaris Viewer 4.1和OfficeSuite,但现在两者都设法打开文件没有问题。
我做错了什么?