>维基百科说GPX文件的MIME类型是application/gpx+xml
。所以我使用了以下代码:
startActivityForResult(
new Intent(Intent.ACTION_OPEN_DOCUMENT)
.addCategory(Intent.CATEGORY_OPENABLE)
.setType("application/gpx"),
READ_GPX_FILE_REQUEST_CODE
);
也试过这个:
startActivityForResult(
new Intent(Intent.ACTION_OPEN_DOCUMENT)
.addCategory(Intent.CATEGORY_OPENABLE)
.setType("application/gpx+xml"),
READ_GPX_FILE_REQUEST_CODE
);
作为最后的手段,我尝试使用Intent#setTypeAndNormalize(String)
方法。没有运气 - 当文件选择器对话框启动时,所有扩展名为.gpx
的文件都具有灰色,即它们不可选择。我的代码中是否存在一些问题,或者 SAF 的Intent
有一些可以使用的预配置的 MIME 类型,application/gpx+xml
不属于这组?
文档提供程序确定其提供的文档的 MIME 类型。对于某些文档提供商,他们可能知道来自上游源的文档 MIME 类型(例如,提供文档提供商的电子邮件客户端可能会从电子邮件的 MIME 标头中获取附件的 MIME 类型(。对于其他一切,它们将倾向于依赖于MimeTypeMap
,而又依赖于一个名为MimeUtils
的内部类。
而且MimeUtils
没有GPX,至少通过Android 7.0。
因此,您需要接受 greenapps 的建议,使用 */*
,并准备好处理解析错误。
FWIW,我提出了一个功能请求,要求将 GPX 添加到MimeUtils
.