无法通过存储访问框架加载具有 .gpx 扩展名的文件
The file with the .gpx extension can not be loaded via Storage Access Framework
Wikipedia says 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 headers 中获取附件的 MIME 类型)。对于其他所有内容,他们将倾向于依赖 MimeTypeMap
,而 MimeTypeMap
又依赖于名为 MimeUtils
.
的内部 class
而 MimeUtils
对 GPX 没有任何影响,at least through Android 7.0。
因此,您需要采纳 greenapps 的建议,使用 */*
,并准备好处理解析错误。
FWIW,我提交 a feature request 以将 GPX 添加到 MimeUtils
。
Wikipedia says 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 headers 中获取附件的 MIME 类型)。对于其他所有内容,他们将倾向于依赖 MimeTypeMap
,而 MimeTypeMap
又依赖于名为 MimeUtils
.
而 MimeUtils
对 GPX 没有任何影响,at least through Android 7.0。
因此,您需要采纳 greenapps 的建议,使用 */*
,并准备好处理解析错误。
FWIW,我提交 a feature request 以将 GPX 添加到 MimeUtils
。