问题描述
我正在开发一个 webview 应用程序,以便在我的应用程序上运行 BigBlueButton 网站以进行视频会议。我遇到一个错误“您使用的是受支持浏览器的旧版本。请升级您的浏览器以获得全面支持”并显示蓝屏。因为我是 android 开发的新手。请帮忙...
我的代码是
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.http.SslError;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.SslErrorHandler;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static WebView webView;
private static ProgressBar webViewProgressBar;
private static ImageView back,forward,refresh,close;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
setUpWebView();
setListeners();
}
private void initViews() {
back = (ImageView) findViewById(R.id.webviewBack);
forward = (ImageView) findViewById(R.id.webviewForward);
refresh = (ImageView) findViewById(R.id.webviewReload);
close = (ImageView) findViewById(R.id.webviewClose);
webViewProgressBar = (ProgressBar) findViewById(R.id.webViewProgressBar);
}
private void setUpWebView() {
webView = (WebView) findViewById(R.id.sitesWebView);
webView.setWebViewClient(new MyWebViewClient());
webView.getSettings().setJavaScriptEnabled(true);
String value = getIntent().getStringExtra("uid");
final String webViewUrl = "http://www.google.com";
LoadWebViewUrl(webViewUrl);
}
private void setListeners() {
back.setonClickListener(this);
forward.setonClickListener(this);
refresh.setonClickListener(this);
close.setonClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.webviewBack:
isWebViewCanGoBack();
break;
case R.id.webviewForward:
if (webView.canGoForward())
webView.goForward();
break;
case R.id.webviewReload:
String url = webView.getUrl();
LoadWebViewUrl(url);
break;
case R.id.webviewClose:
finish();
break;
}
}
public void homeclick(View view) {
Intent intent= new Intent(MainActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view,String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view,String url,Bitmap favicon) {
super.onPageStarted(view,url,favicon);
refresh.setVisibility(View.GONE);
if (!webViewProgressBar.isShown())
webViewProgressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view,String url) {
super.onPageFinished(view,url);
refresh.setVisibility(View.VISIBLE);
if (webViewProgressBar.isShown())
webViewProgressBar.setVisibility(View.GONE);
}
@Override
public void onReceivedError(WebView view,WebResourceRequest request,WebResourceError error) {
super.onReceivedError(view,request,error);
refresh.setVisibility(View.VISIBLE);
if (webViewProgressBar.isShown())
webViewProgressBar.setVisibility(View.GONE);
}
@Override
public void onReceivedHttpError(WebView view,WebResourceResponse errorResponse) {
super.onReceivedHttpError(view,errorResponse);
refresh.setVisibility(View.VISIBLE);
if (webViewProgressBar.isShown())
webViewProgressBar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this,"Fetching data.",Toast.LENGTH_SHORT).show();
}
@Override
public void onReceivedSslError(WebView view,SslErrorHandler handler,SslError error) {
super.onReceivedSslError(view,handler,error);
refresh.setVisibility(View.VISIBLE);
if (webViewProgressBar.isShown())
webViewProgressBar.setVisibility(View.GONE);
}
}
// To handle "Back" key press event for WebView to go back to prevIoUs screen.
@Override
public boolean onKeyDown(int keyCode,KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
isWebViewCanGoBack();
return true;
}
return super.onKeyDown(keyCode,event);
}
private void isWebViewCanGoBack() {
if (webView.canGoBack())
webView.goBack();
else
finish();
}
private void LoadWebViewUrl(String url) {
if (isInternetConnected())
webView.loadUrl(url);
else {
refresh.setVisibility(View.VISIBLE);
}
}
public boolean isInternetConnected() {
// At activity startup we manually check the internet status and change
// the text status
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected())
return true;
else
return false;
}
}
[1]: https://i.stack.imgur.com/pc5sh.jpg
解决方法
你可以像这样添加user agent
webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/78.0.3904.97 Safari/537.36");
并将 MODIFY_AUDIO_SETTINGS
权限添加到 androidManifest.xml