Можно ли открыть только одну конкретную ссылку в браузере в приложении Android для WebView? - PullRequest
0 голосов
/ 08 ноября 2019

Недавно я пытался играть в приложения для Android и создал простое приложение для просмотра веб-страниц, которое открывает мой веб-сайт. Все работает как задумано, и я смог получить ссылки для открытия в самом приложении из кода ниже.

    public boolean shouldOverrideUrlLoading(WebView webView, String url) {
        return false;
    }

Мне было интересно, могу ли я открыть только определенную ссылку в браузере, однако?

Я пытался использовать

if (url.equals("my url here")) {
          //
}

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

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

Спасибо за любую помощь, которую вы можете оказать!

Редактировать: WebViewClientImpl class

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class WebViewClientImpl extends WebViewClient {

    private Activity activity = null;
    private android.content.Context Context;

    public WebViewClientImpl(Activity activity) {
        this.activity = activity;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, String url) {
        if (url.equals("my url here")) {
            Intent i = new Intent(Intent.ACTION_VIEW);
            i.setData(Uri.parse(url));
            startActivity(i);

            return true;
        }
        return false;
    }
}

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Попробуйте:

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class WebViewClientImpl extends WebViewClient {

   Context context;

    public WebViewClientImpl(Context context1) { //pass activity here 
        this.context= context1;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView webView, String url) {
        if (url.equals("my url here")) {
            Intent i = new Intent(Intent.ACTION_VIEW);
            i.setData(Uri.parse(url));
            context.startActivity(i);

            return true;
        }
        return false;
    }
}

Если вы все еще в замешательстве, просто включите этот класс в действие.

0 голосов
/ 08 ноября 2019

Да, это вполне возможно. Что-то вроде этого должно сделать это:

public boolean shouldOverrideUrlLoading(WebView webView, String url) {
    if (url.equals("my url here")) {
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(url));
        startActivity(i);

        return true;
    }

    return false;
}

Обратите внимание, что вы вернете true в случае загрузки URL-адреса через браузер, чтобы отменить загрузку его в WebView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...