關鍵詞: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