当 webview 无法访问互联网并隐藏 url 时,如何在 android 中显示消息?

编程入门 行业动态 更新时间:2024-10-27 18:24:47
本文介绍了当 webview 无法访问互联网并隐藏 url 时,如何在 android 中显示消息?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时送ChatGPT账号..

如何在 webview 中无法访问互联网并隐藏 URL 时在 android 应用程序中显示消息?如果互联网连接不可用,我不想显示 URL 和进度条.

How to show a message in an android app when internet access not available in webview and hide the URL? I don't want to display the URL and progressbar if the internet connection is not available.

这是我的代码.请给我正确的代码.我是安卓初学者.

This is my code. Please provide me the correct code. I am a beginner to android.

public class WebViewClientDemoActivity extends Activity {
    /** Called when the activity is first created. */

    WebView web;
    ProgressBar progressBar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        web = (WebView) findViewById(R.id.webview01);
        progressBar = (ProgressBar) findViewById(R.id.progressBar1);

        web.setWebViewClient(new myWebClient());
        web.getSettings().setJavaScriptEnabled(true);
        web.loadUrl("http://www.vijaytutorials/mo");
    }

    public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            view.loadUrl(url);
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);

            progressBar.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) && web.canGoBack()) {
            web.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

推荐答案

我遇到了同样的问题.我刚刚解决了.我所做的是,如果设备处于离线状态,那么自定义 html 会显示一条消息,说明它为什么无法连接到互联网.将此复制粘贴到您的 webview 活动中.

I had the same problem. I solved it just now. What I did is if the device is offline, then the custom html shows up with a message showing why it could not connect to internet. Copy paste this in your webview Activity.

最终活动活动= this;

final Activity activity = this;

mainWebView.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode,
                    String description, String failingUrl) {
                 String summary =
                 "<html><body>Could not connect to the server.</body></html>";
                 mainWebView.loadData(summary, "text/html", null);

                Toast.makeText(activity, "" + description, Toast.LENGTH_SHORT)
                        .show();
            }
        });

        webview.loadUrl("http://www.tipfortechs/");

然后使用以下代码检查设备是否已连接到互联网,在同一活动中添加以下代码.

Then use the following code to check if the device is connected to internet or not, add the following code in the same activity.

private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }

最后不要忘记在你的清单中使用权限.

At last do not forget to use permission in your Manifest.

  <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

希望有帮助.您的代码已

Hope it helps. Your code Edited:

import android.app.Activity;
import android.graphics.Bitmap;
import android.ConnectivityManager;
import android.NetworkInfo;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.Toast;

/*
 * Demo of creating an application to open any URL inside the application and clicking on any link from that URl 
should not open Native browser but  that URL should open in the same screen.

- Load WebView with progress bar
 */
public class WebViewClientDemoActivity extends Activity {
    /** Called when the activity is first created. */

    WebView web;
    ProgressBar progressBar;
    final Activity activity = this;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        web = (WebView) findViewById(R.id.webview01);
        progressBar = (ProgressBar) findViewById(R.id.progressBar1);

        web.setWebViewClient(new myWebClient());
        web.getSettings().setJavaScriptEnabled(true);



        web.setWebViewClient(new WebViewClient() {
            public void onReceivedError(WebView view, int errorCode,
                    String description, String failingUrl) {
                 String summary =
                 "<html><body>Could not connect to the server.</body></html>";
                 web.loadData(summary, "text/html", null);

                Toast.makeText(activity, "" + description, Toast.LENGTH_SHORT)
                        .show();
            }
        });


        web.loadUrl("http://www.vijaytutorials/mo");
    }

    public class myWebClient extends WebViewClient
    {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            super.onPageStarted(view, url, favicon);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            view.loadUrl(url);
            return true;

        }

        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);

            progressBar.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) && web.canGoBack()) {
            web.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    private boolean isNetworkAvailable() {
        ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
        NetworkInfo activeNetworkInfo = connectivityManager
                .getActiveNetworkInfo();
        return activeNetworkInfo != null;
    }
}

这篇关于当 webview 无法访问互联网并隐藏 url 时,如何在 android 中显示消息?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

更多推荐

[db:关键词]

本文发布于:2023-04-26 04:39:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1129059.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:互联网   无法访问   消息   如何在   webview

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!