关键词:intent 注册 和 官方文档中 Linking 一节android
AndroidManifest.xml
中将 MainActivity 的 launchMode 改成 singleTask
增长合适的 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>
假如你的文件名包含不少 .
,好比 abc.mobile.version.backup.fileExtension
,因为 pathPattern 匹配模式的缘由,目前找到的解决方式是加一堆这样的东西:app
<data android:pathPattern=".*\\..*\\.fileExtension" /> <data android:pathPattern=".*\\..*\\..*\\.fileExtension" /> <data android:pathPattern=".*\\..*\\..*\\..*\\.fileExtension" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.fileExtension" /> <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.fileExtension" />
这个比较简单,很少说了。请求权限后用 lib copy 就好了。url
导入也很简单,麻烦的是想要在微信或文件管理器中打开文件时,app 出如今选择列表里。
为此我看了一堆 intent activity 相关的文档,而后发现以前忽略的 Linking 就足够用了。。。。只是 facebook 的文档写的颇有迷惑性,里面用了一堆 url 让你以为它只是 http 之类的东西。
事实上,只须要作好文件后缀关联,RN 内部已经实现了 intent 相关的处理,在你的应用相对简单没有一堆 Activity 时,使用 Linking 已经足够了。彻底能够拿到 file://
或者 content://
相关的内容。并且无需费力再去思考 onResume 怎么拿到新的 intent 内容
以后只须要使用 lib 对获得的 url 进行处理就 OK 了。code
「手动狗头」xml