使用 React Native 在 Android 中对特定后缀名的文件进行关联和导入导出

本文介绍了如何在React Native应用中处理Android特定文件后缀的关联,通过修改MainActivity的launchMode并配置Intent Filter来实现。导出功能相对简单,而导入时,利用Linking组件可以便捷地处理文件选择,并且在处理文件URL后,配合相关库完成导入操作。

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

关联特定文件后缀名

关键词:intent 注册 和 官方文档中 Linking 一节

  1. AndroidManifest.xml 中将 MainActivity 的 launchMode 改为 singleTask
  2. 增加合适的 intent-filter 如下
    <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:host="*" />
    	<data android:mimeType="*/*" />
    	<data android:pathPattern=".*\\.fileExtension" />
    </intent-filter>
    <intent-filter>
    	<action android:name="android.intent.action.VIEW"/>
    	<category android:name="android.intent.category.DEFAULT"/>
    	<category android:name="android.intent.category.BROWSABLE"/>
       <!--注意下面是 content -->
    	<data android:scheme="content" />
    	<data android:host="*" />
    	<data android:mimeType="*/*" />
    	<data android:pathPattern=".*\\.fileExtension" />
    </intent-filter>
    
  3. 假如你的文件名包含很多 .,比如 abc.mobile.version.backup.fileExtension,由于 pathPattern 匹配模式的原因,目前找到的解决方式是加一堆这样的东西:
    	<data android:pathPattern=".*\\..*\\.fileExtension" />
    	<data android:pathPattern=".*\\..*\\..*\\.fileExtension" />
    	<data android:pathPattern=".*\\..*\\..*\\..*\\.fileExtension" />
    	<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.fileExtension" />
    	<data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.fileExtension" />
    

导出

这个比较简单,不多说了。请求权限后用 lib copy 就行了。

导入

导入也很简单,麻烦的是想要在微信或文件管理器中打开文件时,app 出现在选择列表里。
为此我看了一堆 intent activity 相关的文档,然后发现之前忽略的 Linking 就足够用了。。。。只是 facebook 的文档写的很有迷惑性,里面用了一堆 url 让你觉得它只是 http 之类的东西。
事实上,只需要做好文件后缀关联,RN 内部已经实现了 intent 相关的处理,在你的应用相对简单没有一堆 Activity 时,使用 Linking 已经足够了。完全可以拿到 file:// 或者 content:// 相关的内容。而且无需费力再去思考 onResume 怎么拿到新的 intent 内容
之后只需要使用 lib 对得到的 url 进行处理就 OK 了。

「手动狗头」

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值