如果你的应用能够处理 某些特殊格式的文件, 比如gis行业的 轨迹点文件, 用户在手机的文件管理器中 选中这些文件后,点击“用其它应用打开”,你希望你的应用能出现在 可打开的应用列表中。
需要注意的地方
1、mimeType 需要指定为 "*/*", 因为这种gis文件并不是 计算机行业通用的格式,它没有相应的 mimeType。
2、需要通过 pathPattern 来过滤掉其它格式的文件。
这种方式是我在解压 “两步路(户外助手)”时发现的, 它这种实现方式机智的地方 在于用 pathPattern 来过滤掉 因为 "*/*" 导致的所有类型的文件都能响应的问题。
<activity android:name=".business.trace.ImportRouteActivity" android:screenOrientation="portrait"> <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="content"/> <data android:scheme="http"/> <data android:scheme="https"/> <data android:mimeType="*/*"/> <data android:pathPattern=".*\\.gpx"/> <data android:pathPattern=".*\\.loc"/> <data android:pathPattern=".*\\.kmz"/> <data android:pathPattern=".*\\.kml"/> <data android:pathPattern=".*\\.KML"/> <data android:host="*"/> </intent-filter> </activity>
补充一下 uri 的组成如下:
<scheme>://<host>:<port>/[<path>|<pathPrefix>|<pathPattern>]
- scheme
例如http、content、file。 - host
URI的主机名,比如www.jianshu.com。 - port
端口号。 - path/pathPattern/pathPrefix
path表示完整的路径。 pathPattern是判定完整路径是否匹配用的正则表达式。pathPrefix也是正则表达式,它匹配的是路径的前缀信息。