#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/";
}