安卓将自己的应用加入到“用其它应用打开”的列表中

本文介绍了一种通过在Android应用中配置特定的intent-filter,使应用能够识别并处理.gpx、.loc、.kmz和.kml等GIS文件的方法。通过使用*/*的mimeType并结合pathPattern进行精确过滤,确保了应用仅对目标文件类型做出响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你的应用能够处理 某些特殊格式的文件, 比如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也是正则表达式,它匹配的是路径的前缀信息。



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值