无法通过存储访问框架加载扩展名为.gpx的文件



>维基百科说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 .

最新更新