在webview中加载mobile.twitter的问题

当我尝试在Webview中加载以下URL时,我得到的是带有加载微调器的黑色twitter背景。 在调用WebViewClient.onPageFinished加载页面。 但是,在标准Android浏览器中页面加载正常。

 https://twitter.com/#!/scottyab or https://mobile.twitter.com/#!/scottyab 

我认为Twitter改变了他们的移动网站,因为这工作大约一个月前。 有没有其他人经历过这个?

更新:启用了javascript mWebView.getSettings().setJavaScriptEnabled(true);

那些确实是肮脏的黑客。 更改用户代理实际上是一个讨厌的解决方案, 永远不应该完成。 在webview中加载twitter.com时,你最好试试那里给出的代码: https : //stackoverflow.com/a/6625418/162178

对于懒惰的答题器,我会在这里给出:

 webView.getSettings().setDomStorageEnabled(true); 

所有的积分都归于gregm,谁给了这个:)

快乐的编码!

编辑:只是稍微更新以certificate这一选择,用户代理旨在为访问过的网站提供有关谁是客户端的信息。 如果有一天Twitter对Android进行了特殊更改,他们肯定会使用用户代理来实现这一目标。 如果你告诉他们你的iPhone或任何你可能永远不会被重定向的东西,或者更简单地永远不会得到专门针对Android的css。

而在一个更政治的问题上,如果每个人都改变了它的用户代理,那么网站统计数据就会出错,他们可能永远不会看到有很多机器人进入他们的网站。 ^^(可能考虑对他们的网站进行适当的更新)。 整个事情不仅仅适用于Twitter网络客户端。 所以要好。

本杰明在这里的答案看起来相当不错(如果我是正确的话,使用Java的Reflection使其向后兼容)

因此,再次不要更改用户代理,这对您的应用和网络健康状况非常不利。 应该简单地禁止任何代码。 谢谢 :)

通过将用户代理硬编码到iPhone的用户代理来修复加载问题(我发现它适用于iPhone版本的应用程序)

 mWebView.getSettings().setUserAgentString("Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3"); 

在这个脏兮兮的黑客之后需要洗手。

使用iPhone的用户代理稍微不那么脏,我能够使用OG Droid的用户代理字符串来实现这一点:

 webView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"); 

这样您就不会在页面上获得类似iPhone的特定文本,例如“下载适用于iPhone的新Twitter应用程序”。

在MrBUBBLs回答之后,类似的事情应该在解决Twitter问题时管理向后兼容性:

 // Hack to let mobile twitter work. From API 7 (Android 2.1) only try { Method m = WebSettings.class.getMethod("setDomStorageEnabled", new Class[]{boolean.class}); m.invoke(mWebView.getSettings(), true); } catch (SecurityException e) {} catch (NoSuchMethodException e) {} catch (IllegalArgumentException e) {} catch (IllegalAccessException e) {} catch (InvocationTargetException e) {}