0

I'm building an Webview app which displays my website. My website contains clickable mobile number, I need to open dialer when user clicks it.

I've gone through this question.

Since I'm new to Android development I don't know exactly where to paste that code.

Here Is my Mainactivity.java code

public class MainActivity extends AppCompatActivity {

private WebView webView;
private ProgressBar mProgressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webView= findViewById(R.id.web);
    mProgressBar= findViewById(R.id.progressbar);
    mProgressBar.setMax(100);

    webView.loadUrl("https://");
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient());

    webView.setWebChromeClient(new WebChromeClient(){

        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
            mProgressBar.setProgress(newProgress);
        }

        @Override
        public void onReceivedTitle(WebView view, String title) {
            super.onReceivedTitle(view, title);
        }

        @Override
        public void onReceivedIcon(WebView view, Bitmap icon) {
            super.onReceivedIcon(view, icon);
        }
    });

}
@Override
public void onBackPressed(){
    if (webView.canGoBack()) {
        webView.goBack();
    }else {
        finish();
    }
}}
halfer
  • 19,824
  • 17
  • 99
  • 186
cyanvenky
  • 5
  • 4

1 Answers1

0

You need to Override the shouldOverrideUrlLoading() method in setWebViewClient()

SAMPLE CODE

  webView.setWebChromeClient(new WebChromeClient() {
     public void onProgressChanged(WebView view, int progress) {
        progressBar.setProgress(progress);
     }
   });


    webView.setWebViewClient(new WebViewClient() {

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

        }
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if(url.contains("tel:"))
            {
                Intent intent = new Intent(Intent.ACTION_DIAL);
                intent.setData(Uri.parse(url));
                startActivity(intent);
                return true;
            }else {
                progressBar.setVisibility(view.VISIBLE);
                view.loadUrl(url);
                return true;
            }
            return true;
        }

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

            progressBar.setVisibility(View.GONE);
        }
    });
AskNilesh
  • 67,701
  • 16
  • 123
  • 163
  • Thanks For Your Answer It Worked, But Progress Bar is Not Showing Can You Please Help Regarding That also. – cyanvenky Jan 24 '19 at 06:41