2016-12-06 64 views
0

我正在开发一个项目,该项目在本机应用程序中加载Webview。Android WebView - 仅在旧设备上加载页面(4.1.2)

该应用程序包含一个WebView,它只在旧的Android设备(4.1.2)上正确加载。在新版本(4.4和更高版本)上,视图保持空白。

我已经尝试设置混合内容:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
    getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 
} 

,但它不会改变任何东西。与handler.proceed()函数相同。

@Override 
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { 
    handler.proceed(); // Ignore SSL certificate errors 
} 

的网站包含了大量的JavaScript,所以我也尝试过不同的设置,如setDomStorageEnabled等等... 其实环境是测试服务器,所以证书上我们自己的创造。所以我只想测试应用程序,不考虑发布和可能的问题。但是我没有在logcat中发现错误,所以我真的不知道,还有什么可能是错误的,以及如何进一步调查。

回答

0

我可以推荐你去调试你的新设备。
在这里,你有一个不错的sample。 你将能够调试所有的请求和响应,甚至通过所有那些梦幻般的JS东西看::)

+0

谢谢!从技术上讲,由于不赞成使用的方法(StringBufferInputStream)而出现错误。使用调试器后,我只在模拟器上看到了消息,并将其更改为ByteArrayInputStream。现在工作! – a2hur

+0

@ a2hur嗯,它没有在你的问题中提到。你能否附上这段代码,因为老实说,我并没有完全理解这个关于弃用方法的陈述。 –

+0

Dont工作代码: 'InputStream stream = new StringBufferInputStream(message); // [...]' 工作代码: 'ByteArrayInputStream stream = null; \t \t \t \t \t尝试{ \t \t \t \t \t \t流=新ByteArrayInputStream进行(JsonFile.getBytes( “UTF-8”)); \t \t \t \t \t}赶上(UnsupportedEncodingException E){ \t \t \t \t \t \t e.printStackTrace(); \t \t \t \t \t} \t \t \t \t \t回报新WebResourceResponse( “text/plain的”, “UTF-8”,流);' 正如我问的问题,我thoght我处理的WebView正确我只需要一些更新的Android WebView的附加功能。 通过使用chrome调试器,我收到了一个用于我的流变量的NullPointer。 – a2hur