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