2017-12-21 20 views
0

私のwebViewに問題がありますか? 私はなどのネイティブのWhatsAppを開くには、ユーザーがウェブサイト上のリンクをタップを選択したメッセンジャー、このソリューションを使用してい:私は、たとえば、「電報」をタップし、電報アプリが上にインストールされていない場合、WebViewが致命的になる:jni_android.cc(233)]エラー

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

が、私のデバイス、次のエラーを取得します。

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)

私はそれを修正することができますか?

答えて

0

以下のコードを使用できます。

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