webview資源本地化的一種實現方式

來源:互聯網
上載者:User

標籤:cross   source   替換   http協議   cpu   本地   視頻   oca   nano   

  最近接手了一個crosswalk的任務,需要將Xwalkview的視頻資源放到sd卡裡面,以後每次遇到相同的視頻就直接讀取sd卡裡面的內容。

  剛開始想的使用crosswalk的webResourceClient,利用其中提供的‘shouldInterceptLoadRequest’方法進行url的攔截和資源重新返回。起初使用這個替換圖片,html頁面都是可以的,但是替換視頻的時候就出現了問題,發現攔截成功,但是返回資源的時候就失敗了,仍然是從html中video的src中讀取的。之後尋找了相關的內容,發現webview,包括xwalkview都是載入html中的video標籤時,使用的都是mediaplayer,但是mediaplayer不支援重新導向,因此使用這個方法進行視屏資源的替換是不行的。

  之後就想著通過js進行video路徑的改寫,但是由於html是一個web網頁,並不是本地的,導致了其域不同,而且不單單是域不同,這是從http協議改到了file協議,因此產生了一個‘NOT ALLOWED TO LOAD LOCAL RESOURCE‘的錯誤。

  以上兩個路走不通,最後只能通過webserver將本地的資源轉換成web資源。webserver實現方式可以使用AndroidAsync這個架構,或者nanohttpd也可以。在本地起一個服務進行webserver的開啟,同時在html中將video的路徑用js函數進行處理,在android中操作這個js函數進行路徑的動態改寫。

  webserver在android上路徑設為127.0.0.1之後速度接近cpu速度,基本上可以看成直接操作本地檔案,同時也解決了跨域問題和安全性的問題,在遇到無法使用api進行替換的資源時,可以考慮使用這種方式。

webview資源本地化的一種實現方式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.