x5webview TbsReaderView首次加载失败
Android應用內預覽PDF,WORD,EXCEL等文件,大家伙都嘗試了太多開源方法,各種兼容性問題,最后總算是有騰訊X5WebView來幫忙,x5的TbsReaderView的確是解決了兼容性問題,可以加載大部分的文檔文件,然后官方文件簡陋無比,坑也是太多。本文不贅述內核初始化api和加載文檔的api,只闡述一個問題:首次啟動app后,打開文檔文件時,內核沒有加載成功,重啟正常。
先說處理結果:
如果QbSdk.initX5Environment在Application里邊初始化,那么肯定無法優先拿到Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE這兩個權限,那么內核下載和加載都會失效,所以只有在文件存儲權限之后加載內核,才會成功。那么問題就很簡單了,把初始化x5內核放在請求文件存儲權限成功后執行,就可以完美解決
為何大部分人是首次加載失敗,殺掉進程重啟就可以用:
因為在application里沒法請求動態權限,所以文件存儲權限大部分應用都會在之后的activity里獲取到,所以本次首次啟動加載內核時還沒有權限,下一次啟動時,已經存在權限,那么application里加載內核就是成功的。
總結:
必須在文件存儲權限動態請求成功后,再做x5內核的初始化加載
心得:
處理這個問題,經歷了幾個過程:
1、偶然在一些機型上發現,但后續該機型又恢復正常,此前一直徘徊在兼容性問題上。后來經過多機型多次情景的測試,發現都會出現,就排除機型兼容問題,開始做情景回顧
2、情景回顧過程中,發現首次安裝啟動無法打開pdf文件,殺死進程重啟可以正常使用。推測首次啟動內核加載有問題
3、百度google了很多關于內核啟動問題的文章,大家都在考慮網絡問題,異步問題等,然后第二次啟動基本沒出現問題,所以覺得和其他人說的那些因素關系不大
4、關鍵在于解決問題要從代碼和日志先走起,可能會少走彎路。在日志里看到了x5的日志,有關于file permission deny的相關提示,考慮到某文件可能無法訪問,剛好結合內核加載異常,那很可能就是內核做為文件,無法下載存儲或無法讀取到內存,于是就增加了文件權限,問題解決
總結
以上是生活随笔為你收集整理的x5webview TbsReaderView首次加载失败的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kettle下载windows共享文件夹
- 下一篇: Oracle索引类型-参考