Обнаружение и получение воспроизводимого URL-адреса видео из WebView - PullRequest
0 голосов
/ 07 июня 2019

Я использую WebView в приложении для загрузки URL-адресов. Мне нужна функция обнаружения видео и получения URL-адреса, если в веб-просмотре воспроизводится любое видео.

Я уже использовал WebViewClient и shouldOverrideUrlLoading(WebView view, String url)

Код веб-просмотра

    webview = findViewById(R.id.webview);
    WebSettings webSettings = webview.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webview.getSettings().setPluginState(WebSettings.PluginState.ON);
    webview.getSettings().setBuiltInZoomControls(true);
    webview.getSettings().setDisplayZoomControls(true);
    webview.getSettings().setDomStorageEnabled(true);
    webview.getSettings().setUseWideViewPort(true);
    webview.getSettings().setLoadWithOverviewMode(true);
    webview.setWebViewClient(new MyWebViewClient());
    webview.loadUrl("https://www.google.com/");

Код WebViewClient

  private class MyWebViewClient extends WebViewClient {

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

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (url.contains("youtube") && !url.contains("-youtube")) {
            Toast.makeText(context, "This is youtube url", Toast.LENGTH_SHORT).show();
            return true;
        } else {
            String newUrl = checkUrl(url);
            if (Patterns.WEB_URL.matcher(newUrl).matches()) {
                Toast.makeText(context, "This is url : " + newUrl, Toast.LENGTH_SHORT).show();
                view.loadUrl(newUrl);
            } else {
                Toast.makeText(context, "This is url : " + url, Toast.LENGTH_SHORT).show();
                view.loadUrl(String.format("http://google.com/search?tbm=vid&q=%s -youtube -site:youtube.com", new Object[]{url}));
            }
            return false;
        }
    }
}

public String checkUrl(String str) {
    if (str == null) {
        return str;
    }
    StringBuilder stringBuilder;
    if (Build.VERSION.SDK_INT < 28) {
        if (!str.startsWith("http")) {
            stringBuilder = new StringBuilder();
            stringBuilder.append("http://");
            stringBuilder.append(str);
            str = stringBuilder.toString();
        }
        return str;

    } else if (str.startsWith("https")) {
        return str;
    } else {
        if (str.startsWith("http")) {
            return str.replaceFirst("http", "https");
        }
        stringBuilder = new StringBuilder();
        stringBuilder.append("https://");
        stringBuilder.append(str);
        return stringBuilder.toString();
    }
}

ПРИМЕЧАНИЕ - Я могу получить ссылку на текущий загруженный URL, но не могу получить ссылку на воспроизведение видео в текущем URL в веб-просмотре.

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