2017-07-07 233 views
0

我創建Android應用程序中嵌入只顯示一個網站瀏覽器,使用WebView餅乾的WebView

mywebView = (WebView) findViewById(R.id.activity_main_webview); 
WebSettings webSettings = mywebView.getSettings(); 
webSettings.setJavaScriptEnabled(true); 
mywebView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { ... } 
}); 
mywebView.loadUrl("http://www.example.com"); 

我注意到兩件怪事:

  • 我得到一個消息,如「 Cookies被禁用「

  • 當我點擊應該顯示PDF文件的鏈接時,沒有任何反應(但沒有錯誤信息)

如何啓用cookies等功能並打開(或至少下載)PDF文件?

+0

你應該看看這個[post](https://stackoverflow.com/questions/1652850/android-webview-cookie-problem) – kPieczonka

回答

3

這是一個gist of a small app,演示瞭如何在WebView中啓用cookie以及如何下載/打開PDF文件。

請注意,該應用程序演示了兩種打開PDF文件的方式。第一種方法是在WebView中打開PDF;第二種方法是在外部應用程序中打開PDF(如果爲PDF文件定義了PDF)。

請務必記住WebView不提供全面的類似瀏覽器的支持。從documentation for WebView

基本用法

默認情況下,的WebView不提供類似瀏覽器的窗口小部件,不啓用JavaScript和網頁錯誤被忽略。如果你的目標只是將一些HTML作爲你的用戶界面的一部分顯示出來,這可能是好的;除了閱讀外,用戶不需要與網頁交互,網頁也不需要與用戶交互。如果你真的想要一個完整的Web瀏覽器,那麼你可能想用URL Intent調用瀏覽器應用程序,而不是用WebView顯示它。

谷歌繼續細化WebView,所以你會想要跟上changes。此外,Google繼續處理WebView的安全問題,例如,將不再支持源自WebView的OAuth請求。請參閱this

+0

謝謝。 PDF下載的工作,但餅乾的事情仍然沒有。我嘗試了一切:'CookieManager cm = CookieManager.getInstance();',然後'cm.setAcceptCookie(true); cm.setAcceptThirdPartyCookies(mywebView,true);'在mywebView.loadUrl()或之前,它是一樣的「Sorry,but this browser does not accept cookies」:(:(這是一個Wordpress的wp-login.php頁面) – Basj

+1

@Basj很高興PDF下載正在工作。您是否從WordPress獲取cookie錯誤消息?可能是像[this](https://www.steckinsights.com/how-to-fix-a-cookies-blocked -error-on-wordpress-admin-dashboard /)繼續?你的測試環境是什麼(API /設備)?你有沒有試過訪問另一個需要cookie的站點以查看它們是否被阻塞? – Cheticamp

+0

@Basj Another思考:檢查你可能使用的任何瀏覽器,並確保cookies已打開。在Chrome瀏覽器中,查看「設置」。 – Cheticamp