我正在为使用JavaScript的公司开发EPUB阅读器,该应用程序在Android 2.2上运行良好,但是当我在ICS& HoneyCom,JavaScript不能很好地运行。我面临的第一个问题是WebView
没有加载JS文件(Unknown Error -6
),所以我使用了这个解决方案:
@TargetApi(11)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
Log.d("shouldInterceptRequest", url);
InputStream stream = inputStreamForAndroidResource(url);
if (stream != null) {
return new WebResourceResponse("text/javascript", "utf-8", stream);
}
return super.shouldInterceptRequest(view, url);
}
private InputStream inputStreamForAndroidResource(String url) {
final String ANDROID_ASSET = "file:///android_asset/";
if (url.contains(ANDROID_ASSET)) {
// url = url.replaceFirst(ANDROID_ASSET, "");
String[] f = url.split("/");
url = "epub/"
+ f[f.length - 1]
.substring(0, f[f.length - 1].indexOf("'"));
try {
AssetManager assets = mActivity.getAssets();
Uri uri = Uri.parse(url);
return assets
.open(uri.getPath(), AssetManager.ACCESS_STREAMING);
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
现在我没有这个错误,但JS仍然无法正常工作。有没有人有解决方案?
答案 0 :(得分:1)
我发现的唯一解决方案与问题相同......
答案 1 :(得分:0)
我可能会说这是一个愚蠢的事情。但现在已经很晚了,我累了......
您是否尝试在Javascript
中启用WebView
?
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
答案 2 :(得分:0)
你可以在manifest.xml的应用程序标签中添加一个属性android:hardwareAccelerated =“true”,你可以在创建中添加一些设置
wvMain.getSettings().setSupportZoom(true);
wvMain.getSettings().setBuiltInZoomControls(true);
wvMain.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
wvMain.setScrollbarFadingEnabled(true);
wvMain.getSettings().setLoadsImagesAutomatically(true);
wvMain.getSettings().setJavaScriptEnabled(true);
wvMain.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wvMain.getSettings().setPluginsEnabled(true);
wvMain.getSettings().setSupportZoom(false);
wvMain.getSettings().setCacheMode(wvMain.getSettings().LOAD_NO_CACHE);
webSettings8.setPluginState(WebSettings.PluginState.ON);
wvMain.setWebViewClient(new WebViewClient());
wvMain.addJavascriptInterface(this, "Android");
wvMain.getSettings().setSupportMultipleWindows(true);
wvMain.getSettings().setPluginsEnabled(true);
wvMain.getSettings().setUseWideViewPort(true);
wvMain.getSettings().setLoadWithOverviewMode(true);
我希望这会有所帮助。但请注意,在3.0之后,hardwareaccelerated属性支持。