skip to Main Content

In a nutshell I want that when I click on telegram in webview I don’t want the link to open or if I click on telegram I want to stay on the same page without the link opening

i tried to search but i didn’t find anything, at most i found something about how to disable all links on the webview and not some

4

Answers


  1. Chosen as BEST ANSWER
    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        webView = (WebView) findViewById(R.id.webview);
        
        webView.setWebViewClient(new WebViewClient());
        
    
        webView.setWebChromeClient(new MyChrome());
        webView.loadUrl("https://streamingcommunity.love/");
    
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
    
    }
    
    @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }
    
    private class MyChrome extends WebChromeClient {
    
        private View mCustomView;
        private WebChromeClient.CustomViewCallback mCustomViewCallback;
        protected FrameLayout mFullscreenContainer;
        private int mOriginalOrientation;
        private int mOriginalSystemUiVisibility;
    
        MyChrome() {}
    
        public Bitmap getDefaultVideoPoster()
        {
            if (mCustomView == null) {
                return null;
            }
            return BitmapFactory.decodeResource(getApplicationContext().getResources(), 2130837573);
        }
    
        public void onHideCustomView()
        {
            ((FrameLayout)getWindow().getDecorView()).removeView(this.mCustomView);
            this.mCustomView = null;
            getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility);
            setRequestedOrientation(this.mOriginalOrientation);
            this.mCustomViewCallback.onCustomViewHidden();
            this.mCustomViewCallback = null;
        }
    
        public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback)
        {
            if (this.mCustomView != null)
            {
                onHideCustomView();
                return;
            }
            this.mCustomView = paramView;
            this.mOriginalSystemUiVisibility = getWindow().getDecorView().getSystemUiVisibility();
            this.mOriginalOrientation = getRequestedOrientation();
            this.mCustomViewCallback = paramCustomViewCallback;
            ((FrameLayout)getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1));
            getWindow().getDecorView().setSystemUiVisibility(3846 | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        }
    }
    
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        webView.saveState(outState);
    }
    
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        webView.restoreState(savedInstanceState);
    }
    

  2. You should use webview client to intercept the clicks.

    Code :

    In your webview set webViewClient

    webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                String url = request.getUrl().toString();
                if (isValidEmail(url)) {
                    return true;
                } else if (url.contains("www.instagram.com"))
                    return true;
                else if (url.contains("https://t.me"))
                    return true;
                else
                    return super.shouldOverrideUrlLoading(view, request)
            }
    
            @Override
            public void onLoadResource(WebView view, String url) {
                // do nothing
                //super.onLoadResource(view, url);
            }
        });
    

    To check whether it’a valid email :

      public static boolean isValidEmail(CharSequence target) {     return (!TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches());
     }
    

    Now in shouldOverrideUrlLoading you can check the url and return whether to override url loading or not according to your need.

    Login or Signup to reply.
  3. webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            String url = request.getUrl().toString();
            if (isValidEmail(url)) {
                return true;
            } else if (url.contains("www.instagram.com")) {
                return true;
            } else if (url.contains("https://t.me"))
                        return true;
            } else {
                 return super.shouldOverrideUrlLoading(view, request);
            }
        }
    
        @Override
        public void onLoadResource(WebView view, String url) {
            // do nothing
            //super.onLoadResource(view, url);
        }
    
        public boolean isValidEmail(CharSequence target) {
            return (!TextUtils.isEmpty(target) && Patterns.EMAIL_ADDRESS.matcher(target).matches());
        }
    });
    
    Login or Signup to reply.
  4. webView.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            String url = request.getUrl().toString();
            if (url.contains("mailto:"))
                return true;
            if (url.contains("www.instagram.com"))
                return true;
            if (url.contains("https://t.me"))
                return true;
            else
                return super.shouldOverrideUrlLoading(view, request);
        }
    });
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search