2

JavaScript を使用して会社の EPUB リーダーに取り組んでいます。アプリケーションは Android 2.2 でうまく動作しますが、ICS & HoneyCom で試してみると、JavaScript がうまく動作しません。私が直面した最初の問題は、 JS ファイル ( ) をWebViewロードしないため、この解決策を使用しました。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 はまだ動作しません。誰にも解決策がありますか?

4

3 に答える 3

1

私が見つけた唯一の解決策は、質問と同じです....

于 2012-10-31T03:22:38.880 に答える
0

私がここで言っていることはばかげているかもしれません。でももう遅いし疲れた…

で有効JavascriptにしてみましたWebViewか?

WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
于 2012-09-23T11:35:35.860 に答える
0

manifest.xml の application タグに android:hardwareAccelerated="true" というプロパティを 1 つ追加することも、作成時にいくつかの設定を追加することもできます。

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);

これが役立つことを願っていますが、hardwareaccelerated プロパティは 3.0 以降をサポートしていることに注意してください。

于 2012-09-24T13:26:18.843 に答える