首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebView get FATAL:jni_android.cc(233)]错误

WebView get FATAL:jni_android.cc(233)]错误
EN

Stack Overflow用户
提问于 2017-12-21 19:37:29
回答 1查看 1.2K关注 0票数 0

我的webView有点问题。我正在使用这个解决方案,当用户选择点击网站上的链接时,打开本地whatsapp等信使:

代码语言:javascript
复制
  @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.d(LOG_TAG, "shouldOverrideUrlLoading: " + url);
        if (url.contains("tel:")) {
            startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
            return true;
        } else if (url.startsWith("whatsapp:")
                || url.startsWith("viber:")
                || url.startsWith("telegram:")) {

            try {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                startActivity(intent);

            } catch (android.content.ActivityNotFoundException e) {
                Log.e(LOG_TAG, "Error with " + url + ": " + e.toString());
                Toast.makeText(getApplicationContext(), getString(R.string.app_not_install), Toast.LENGTH_SHORT).show();
            } catch (Exception q){
                q.printStackTrace();
            }
            return true;
        }
        if (Uri.parse(url).getHost().equals(URL)) {
            // This is my web site, so do not override; let my WebView load the page
            return super.shouldOverrideUrlLoading(view, url);
        }
        return super.shouldOverrideUrlLoading(view, url);
    }

但是,如果我点击了“电报”,例如,电报应用程序没有安装在我的设备上,得到下一个错误。

代码语言:javascript
复制
 A/chromium: [FATAL:jni_android.cc(233)] Check failed: false. Please include Java exception stack in crash report
 W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
 W/google-breakpad: Chrome build fingerprint:
 W/google-breakpad: 1.0
 W/google-breakpad: 1
 W/google-breakpad: ### ### ### ### ### ### ### ### ### ### ### ### ###
 A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 15585 (moilov.filipapp)

我怎么才能修复它?

EN

回答 1

Stack Overflow用户

发布于 2017-12-21 19:48:21

你可以在下面的代码中使用它。

代码语言:javascript
复制
protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);

        context = WebviewActivity.this;

        mPullRefreshWebView = (PullToRefreshWebView) findViewById(R.id.wv);
        mWebView = mPullRefreshWebView.getRefreshableView();

        tvError.setVisibility(View.GONE);
        mWebView.setVisibility(View.VISIBLE);

        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setBuiltInZoomControls(true);

        dialog = ProgressDialog.show(context, "", "Please wait,", true);

        url = "https://google.co.in";

        if (objCommon.isOnline(context)) {
            tvError.setVisibility(View.GONE);
            mWebView.setVisibility(View.VISIBLE);
            mWebView.setWebViewClient(new SampleWebViewClient());
            mWebView.loadUrl(url);
        } else {
            Toast.makeText(context, clsCommon.NETWORK_ERROR_MSG, Toast.LENGTH_SHORT).show();
            tvError.setVisibility(View.VISIBLE);
            mWebView.setVisibility(View.GONE);
            if (dialog.isShowing()) dialog.dismiss();
        }

        tvError.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (objCommon.isOnline(context)) {
                    mWebView.getSettings().setJavaScriptEnabled(true);
                    mWebView.getSettings().setBuiltInZoomControls(true);

                    dialog = ProgressDialog.show(context, "", "Please wait,", true);

                    mWebView.setWebViewClient(new SampleWebViewClient());
                    mWebView.loadUrl(url);

                    //setting.setCacheMode(WebSettings.LOAD_CACHE_ONLY);
                } else {
                    Toast.makeText(context, clsCommon.NETWORK_ERROR_MSG, Toast.LENGTH_SHORT).show();
                    tvError.setVisibility(View.VISIBLE);
                    mWebView.setVisibility(View.GONE);
                    if (dialog.isShowing()) dialog.dismiss();
                }
            }
        });

        mWebView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                // Activities and WebViews measure progress with different scales.
                // The progress meter will automatically disappear when we reach 100%
                //setProgress(progress * 1000);

                if (progress == 100)
                {
                    if (dialog.isShowing()) dialog.dismiss();

                    mPullRefreshWebView.onRefreshComplete();

                    if (objCommon.isOnline(context))
                    {
                        tvError.setVisibility(View.GONE);
                        mWebView.setVisibility(View.VISIBLE);
                    }
                    else
                    {
                        tvError.setVisibility(View.VISIBLE);
                        mWebView.setVisibility(View.GONE);
                    }
                }
            }

            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                //Toast.makeText(context, "test : "+message, Toast.LENGTH_LONG).show();
                return super.onJsAlert(view, url, message, result);
            }
        });
    }

private class SampleWebViewClient extends WebViewClient
    {
        private Uri mCapturedImageURI;
        private int FILECHOOSER_RESULTCODE=11;
        private ValueCallback<Uri> mUploadMessage;

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
        {
            view.loadUrl(url);
            return true;
        }

        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) 
        {
            tvError.setVisibility(View.VISIBLE);
            mWebView.setVisibility(View.GONE);
            if(dialog.isShowing())dialog.dismiss();
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) 
        {
            super.onPageStarted(view, url, favicon);

            if(objCommon.isOnline(context)) 
                tvError.setVisibility(View.GONE);
            else 
                tvError.setVisibility(View.VISIBLE); 
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);

            if(dialog.isShowing())dialog.dismiss();
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47924143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档