這似乎是一個奇怪的問題,但我很想知道它是否會工作。我正在從事POC工作,因此不得不證明或反駁這是否有效。從Android本機應用程序訪問JS代碼
在Android應用程序中的用戶界面將是原生的(Java + XML佈局)+一些其他設備功能訪問像(相機/文件系統等)。
有一個JS庫,我已經建立,有幾個功能,做Ajax發佈和獲取請求。
在應用程序中,我有一個無形的Webview,我加載一個空白的HTML(引用這個JS庫)。進入該WebView,我注入了JavascripInterface。所以,基本上,用戶界面將是本地的,你永遠不會看到Webview。這只是一個提供對我的JS庫訪問本地代碼的主機。
現在,在我的UI上的一些操作中,我調用了Webview上的JS函數,它反過來嘗試進行ajax調用(loadUrl調用ex。javascipt:functionName())。但是,這些調用失敗,沒有任何明顯的錯誤。
注意:如果我在我的桌面瀏覽器上加載它,這個相同的HTML文件的工作。 AJAX調用成功。
但是,當我發起阿賈克斯通過JavascriptInterface(或webview.loadUrl()調用)調用,他們失敗了,有效應初探狀態除了0
事情從AJAX,喜歡簡單的函數調用,警報和通過javascript界面回調工作正常。
問:我知道這是一種奇怪而不切實際的做事方式。但是,它會/應該工作?
更新:即使設置了
setBlockNetworkLoads(false),它仍然不起作用。
我試着記錄JS調用和錯誤,並得到這個錯誤。
請求標頭字段X-Requested-With不允許通過 訪問控制允許標題。
任何想法如何解決這個問題?
1.你有權限中有'android.permission.INTERNET'嗎? 2.粘貼一個鏈接到你正在請求的頁面或者.html文件的開頭,或者在WebView中加載的東西。 3.您是否在使用:http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldInterceptRequest%28android.webkit.WebView,%20java.lang.String%29 – g00dy
可能是一個線程問題 - 問題在UI線程(視圖)和用於ajax請求的線程之間 – uriz
我有權限。爲什麼我需要在這裏使用WebViewClient? –