我的应用程序可以打开以下文件格式:
- kml(应用程序/vnd.google-earth.kml+xml)
- kmz(应用程序/vnd.google-earth.kmz)
- gpx(应用程序/gpx+xml)
我正在尝试正确设置我的意图过滤器,以便在尝试通过以下方案打开这些文件类型之一时建议我的应用程序:
我希望以下过滤器能够捕获所有情况(名称中带有点的文件除外,但这是另一个问题):
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="content" />
<data android:pathPattern=".*\\.kml" />
<data android:pathPattern=".*\\.kmz" />
<data android:pathPattern=".*\\.gpx" />
<data android:mimeType="application/vnd.google-earth.kml+xml" />
<data android:mimeType="application/vnd.google-earth.kmz" />
<data android:mimeType="application/gpx+xml" />
</intent-filter>
但是,如果文件资源管理器未正确设置 GPX 内容类型,则无法识别 GPX 文件(即使它们已正确命名,扩展名为“.gpx”)。
有人知道有什么问题吗?
所以这就是我最终得到的结果:
<!--Mime type set -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="content" />
<!-- Valid mime types -->
<data android:mimeType="application/vnd.google-earth.kml+xml" />
<data android:mimeType="application/vnd.google-earth.kmz" />
<data android:mimeType="application/gpx+xml" />
<!-- Invalid mime types used by some bad software -->
<data android:mimeType="application/kml" />
<data android:mimeType="application/kmz" />
<data android:mimeType="application/gpx" />
<data android:mimeType="application/kml+xml" />
<data android:mimeType="application/kmz+xml" />
<data android:mimeType="application/vnd.google-earth.kml" />
<data android:mimeType="application/vnd.google-earth.gpx" />
<data android:mimeType="application/vnd.google-earth.kmz+xml" />
<data android:mimeType="application/vnd.google-earth.gpx+xml" />
<data android:mimeType="text/kml" />
<data android:mimeType="text/kmz" />
<data android:mimeType="text/gpx" />
<data android:mimeType="text/kml+xml" />
<data android:mimeType="text/kmz+xml" />
<data android:mimeType="text/gpx+xml" />
<data android:mimeType="text/xml+kml" />
<data android:mimeType="text/xml+kmz" />
<data android:mimeType="text/xml+gpx" />
</intent-filter>
<!-- Mime type not set but valid extensions -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="content" />
<data android:host="*" />
<data android:pathPattern="/.*..*..*..*..*\\.gpx" />
<data android:pathPattern="/.*..*..*..*..*\\.kml" />
<data android:pathPattern="/.*..*..*..*..*\\.kmz" />
<data android:pathPattern="/.*..*..*..*\\.gpx" />
<data android:pathPattern="/.*..*..*..*\\.kml" />
<data android:pathPattern="/.*..*..*..*\\.kmz" />
<data android:pathPattern="/.*..*..*\\.gpx" />
<data android:pathPattern="/.*..*..*\\.kml" />
<data android:pathPattern="/.*..*..*\\.kmz" />
<data android:pathPattern="/.*..*\\.gpx" />
<data android:pathPattern="/.*..*\\.kml" />
<data android:pathPattern="/.*..*\\.kmz" />
<data android:pathPattern="/.*\\.gpx" />
<data android:pathPattern="/.*\\.kml" />
<data android:pathPattern="/.*\\.kmz" />
</intent-filter>
<!-- Invalid mime type but valid extensions -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="file" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="content" />
<data android:host="*" />
<data android:mimeType="*/*" />
<data android:pathPattern="/.*..*..*..*..*\\.gpx" />
<data android:pathPattern="/.*..*..*..*..*\\.kml" />
<data android:pathPattern="/.*..*..*..*..*\\.kmz" />
<data android:pathPattern="/.*..*..*..*\\.gpx" />
<data android:pathPattern="/.*..*..*..*\\.kml" />
<data android:pathPattern="/.*..*..*..*\\.kmz" />
<data android:pathPattern="/.*..*..*\\.gpx" />
<data android:pathPattern="/.*..*..*\\.kml" />
<data android:pathPattern="/.*..*..*\\.kmz" />
<data android:pathPattern="/.*..*\\.gpx" />
<data android:pathPattern="/.*..*\\.kml" />
<data android:pathPattern="/.*..*\\.kmz" />
<data android:pathPattern="/.*\\.gpx" />
<data android:pathPattern="/.*\\.kml" />
<data android:pathPattern="/.*\\.kmz" />
</intent-filter>
似乎适用于我测试的所有文件管理器(FX、ES、Astro、File Commander)。
(对于那些想知道奇怪的路径模式的人,请参阅如果文件名中其他地方存在句点,则匹配文件扩展名的路径模式不起作用?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)