问题描述
当webview无法加载内容时,我正在尝试启动一个活动(错误页面)。但是在构建过程中没有错误,但是应用程序关闭了,而Inernet关闭了。本来可以启动Errorpage活动。
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import androidx.appcompat.app.AppCompatActivity;
public class smwebview extends AppCompatActivity {
private WebView webview;
private ProgressBar spinner;
String ShowOrHideWebViewInitialUse = "show";
private WebView mWebView; //added for back buton override
public boolean mShouldPause = false;
String fullurl;
private ProgressBar spinner;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_smwebview);
getIntent();
fullurl= getIntent().getStringExtra("full_url");
webview = (WebView) findViewById(R.id.webView_Latest);
webview.setWebViewClient(new CustomWebViewClient());
spinner = (ProgressBar)findViewById(R.id.progressBar2);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setAppCacheEnabled(true);
webview.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
webview.setoverScrollMode(WebView.OVER_SCROLL_NEVER);
getwindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);// keep screen on
webview.loadUrl(fullurl);
private class CustomWebViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView webview,String url,Bitmap favicon) {
if (ShowOrHideWebViewInitialUse.equals("show")) {
webview.setVisibility(webview.INVISIBLE);
}
}
@Override
public void onLoadResource(WebView webview,String url) {
super.onLoadResource(webview,url);
if (url.contains("youtube.com")) mShouldPause = true;
}
public void onReceivedError(WebView webview,int errorCode,String description,String failingUrl) {
Intent intent7 = new Intent(smwebview.this,Errorpage.class);
startActivity(intent7);
}
@Override
public void onPageFinished(WebView view,String url) {
ShowOrHideWebViewInitialUse = "hide";
spinner.setVisibility(View.GONE);
view.setVisibility(webview.VISIBLE);
super.onPageFinished(view,url);
}
}
public class WebViewClient extends android.webkit.WebViewClient {
@Override
public void onPageStarted(WebView webview,Bitmap favicon) {
if (ShowOrHideWebViewInitialUse.equals("show")) {
webview.setVisibility(webview.INVISIBLE);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view,String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view,url);
}
}
@Override
public void onResume()
{
super.onResume();
webview.onResume();
}
@Override
public void onPause() {
super.onPause();
if(mShouldPause){
webview.onPause();
}
mShouldPause = false;
}
@Override
public boolean onKeyDown(int keyCode,KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
if (webview.canGoBack()) {
webview.goBack();
} else {
super.onBackpressed();
}
return true;
}
}
return super.onKeyDown(keyCode,event);
}
}
如果有人有任何想法,请帮助我。还请评论您对代码/逻辑的建议。 (我是android编程的新手)
解决方法
Internet(如果关闭)。在不同的情况下,必须在加载之前添加检查Internet连接。 或onRwleceiveError是不同的情况。当您加载错误的网址或utl时,您输入的内容无效