Я хотел знать в веб-просмотре Android Studio, можно ли отключить некоторые ссылки на странице (электронная почта Telegram в Instagram)

Короче говоря, я хочу, чтобы, когда я нажимаю на телеграмму в веб-просмотре, я не хотел, чтобы ссылка открывалась, или если я нажимаю на телеграмму, я хочу оставаться на той же странице без открытия ссылки

я пытался искать, но ничего не нашел, в лучшем случае я нашел что-то о том, как отключить все ссылки в веб-просмотре, а не некоторые

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
84
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы должны использовать клиент веб-просмотра для перехвата кликов.

Код :

В вашем веб-просмотре установите 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);
        }
    });

Чтобы проверить, является ли это действительным адресом электронной почты:

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

Теперь в shouldOverrideUrlLoading вы можете проверить URL-адрес и указать, следует ли переопределить загрузку URL-адреса или нет в соответствии с вашими потребностями.

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

братан, я пытался внести изменения в код, и я могу сказать вам, что то же самое касается электронной почты, которая не открывается, все в порядке

Gegè 31.03.2023 11:01

тогда я хотел спросить вас еще о чем вы знаете как я могу вставить блокировщик рекламы внутри кода, я нашел кое-что в гугле, но я не нашел многого

Gegè 31.03.2023 11:02

Другие вопросы по теме