2017-07-07 242 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