WebView gère les informations de code d'erreur renvoyées par la page Web
Introduction à cette section :
Hé, si votre entreprise crée une application mobile HTML5, elle affiche les pages Web via WebView si la page Web que vous visitez. N'existe pas, ou d'autres erreurs, signalant 404, 401, 403, 30X et d'autres codes d'état d'erreur, si l'erreur par défaut de WebView apparaît directement La page d'invite n'est peut-être pas aussi conviviale. Nous pouvons remplacer la méthode onReceivedError() de WebViewClient pour atteindre notre objectif. Il existe deux méthodes générales pour obtenir l'effet souhaité. La première est la suivante : nous créons nous-mêmes un message d'erreur dans le répertoire des actifs. Page HTML, lorsqu'une erreur se produit, c'est-à-dire lorsque onReceivedError() est appelé, nous appelons le loadUrl de webView pour nous accéder. Page d'erreur, telle que : wView.loadUrl("file:///android_asset/error.html");! Ou nous pouvons en écrire une autre. Une mise en page ou une grande image est généralement définie comme invisible. Lorsqu'une erreur de page se produit, rendez la mise en page ou l'image visible ! Écrivons un exemple simple ci-dessous !
1. Erreur de page, chargement d'une page Web personnalisée :
Exécution du rendu :
Code clé:
wView.setWebViewClient(new WebViewClient() { //设置在webView点击打开的新网页在当前界面显示,而不跳转到新的浏览器中 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); wView.loadUrl("file:///android_asset/error.html"); } });
2. Erreur de page, afficher la vue correspondante
Rendu en cours d'exécution :
Code d'implémentation :
public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private WebView wView; private ImageView img_error_back; private Button btn_refresh; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wView = (WebView) findViewById(R.id.wView); img_error_back = (ImageView) findViewById(R.id.img_error_back); btn_refresh = (Button) findViewById(R.id.btn_refresh); wView.loadUrl("http://www.baidu.com"); wView.setWebViewClient(new WebViewClient() { //设置在webView点击打开的新网页在当前界面显示,而不跳转到新的浏览器中 @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { super.onReceivedError(view, errorCode, description, failingUrl); wView.setVisibility(View.GONE); img_error_back.setVisibility(View.VISIBLE); } }); btn_refresh.setOnClickListener(this); } @Override public void onClick(View v) { wView.loadUrl("http://www.baidu.com"); img_error_back.setVisibility(View.GONE); wView.setVisibility(View.VISIBLE); } }
3. Téléchargement d'un exemple de code :
WebViewDemo8.zip : Télécharger<🎜 > WebViewDemo8.zip
Résumé de cette section :
Bon, c'est une section très simple, haha, super simple, non, en plus, on peut aussi ? personnalisez-le en fonction de différents codes d'erreur pour définir différents Page ~ Développons-le ici. L'apprentissage de base sur WebView se termine ici. Dans la section suivante, nous inaugurerons la programmation réseau. L'une des difficultés : la programmation réseau Socket. Bien sûr, si vous l'avez déjà appris, ce sera facile à apprendre si vous ne l'avez pas fait. Socket~Restez à l'écoute~Je n'ai pas l'habitude de ne pas poster d'émoticônes, haha~Merci~