Как отключить автоматическое воспроизведение видео в Facebook с помощью WebView Android?

#android #android-studio #webview

Вопрос:

Когда я открываю Facebook через WebView, видео в фейкбуке начинают воспроизводиться автоматически. Как отключить эту функцию. Вот мой код

 public String target_url = "https://www.facebook.com/";
    public WebView webView;
    webView = (WebView) findViewById(R.id.webview);
    // WebSettings webSettings = webView.getSettings();
    //webView.loadUrl("http://www.facebook.com");

    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setDisplayZoomControls(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
    webView.addJavascriptInterface(this, "FBDownloader");

    
    CookieSyncManager.createInstance(this);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    CookieSyncManager.getInstance().startSync();

    webView.loadUrl(target_url);
 

Здесь я использую webview для открытия facebook в своем приложении

Комментарии:

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

2. я использую WebView.setWebViewClient() для управления всеми своими представлениями. Вы просто скажите мне, как я отключаю автозапуск видео в facebook, пожалуйста!

Ответ №1:

Используйте следующую библиотеку, чтобы остановить автоматическое воспроизведение видео

 dependencies { 
//WebLayout
   implementation 'com.github.Justson.AgentWeb:agentweb-core:v4.1.9-androidx'
   implementation 'com.github.Justson:Downloader:v4.1.9-androidx'
}
 

Вот код того, как использовать эту библиотеку

 AgentWeb mAgentWeb = AgentWeb.with(this)
            .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))
            .useDefaultIndicator()
            .setWebChromeClient(mWebChromeClient)
            .setWebViewClient(mWebViewClient)
            .setMainFrameErrorView(R.layout.activity_facebook, -1)
            .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK)
            .setWebLayout(new WebLayout(this))
            .setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.ASK)
            .interceptUnkownUrl()
            .createAgentWeb()
            .ready()
            .go(getUrl());

    long n = System.currentTimeMillis();
    Log.i("Info", "init used time:"   (n - p));


    this.mWebView = this.mAgentWeb.getWebCreator().getWebView();
private final com.just.agentweb.WebViewClient mWebViewClient = new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        return super.shouldOverrideUrlLoading(view, request);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        //do you  work
        Log.i("Info", "BaseWebActivity onPageStarted");
    }

    @Override
    public void onLoadResource(WebView view, String url) {
        super.onLoadResource(view, url);
    }
};
private final com.just.agentweb.WebChromeClient mWebChromeClient = new WebChromeClient() {
    @Override
    public void onReceivedTitle(WebView view, String title) {
        super.onReceivedTitle(view, title);

    }
};

public String getUrl() {
    return "https://m.facebook.com/";
}