【问题标题】:How to load second URL if first one fails to load? - Android Studio WebView如果第一个 URL 加载失败,如何加载第二个 URL? - 安卓工作室网页视图
【发布时间】:2020-04-06 13:36:08
【问题描述】:

所以这里有一些上下文。我使用 MotionEyeOS 为我的后院制作了 IP 摄像头,当我在本地网络上时,我可以使用摄像头本地 IP 地址连接到它,我还为它设置了 DDNS,这样我就可以从互联网的任何地方连接到它。问题是当我在本地网络上尝试连接我的 DDNS 链接时 - 它不起作用。所以我想制作一个应用程序,无论我是否在本地网络上,它都会自动将我连接到相机。

我已经在互联网上搜索了几个小时,但没有找到任何有用的东西。

所以我的问题是我该怎么做?请注意,我不是在找人为我编写代码,我只是在寻求正确方向的指导,其余的我会自己解决。

提前致谢!

【问题讨论】:

    标签: android uiwebview android-webview


    【解决方案1】:

    我自己想通了。

    我使用函数onReceivedError 来查看页面是否加载失败,如果是,我将加载第二个链接。我用thisstackoverflow问题作为参考。

    这是有效的代码:

    package com-example.myapp;
    import androidx.appcompat.app.AppCompatActivity;
    import android.content.pm.ActivityInfo;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.webkit.WebView;
    import android.webkit.WebViewClient;
    import android.widget.Toast;
    
    
    public class MainActivity extends AppCompatActivity {
    
    String url1 = "http://192.168.1.1";
    String url2 = "http://192.168.1.2";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        final WebView myWebView = (WebView) findViewById(R.id.webView);
    
    
        myWebView.setWebViewClient(new WebViewClient() {
    
    
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
            {
                Toast.makeText(getApplicationContext(), "Failed loading app!", Toast.LENGTH_SHORT).show();
    
    
                    myWebView.loadUrl(url2);
    
    
            }
    
    
        });
    
        myWebView.loadUrl(url1);
    
    
        }
    
    
    }
    

    【讨论】:

      【解决方案2】:

      检查您的 URL 无法加载 onReceivedError

          WebView webView;
      
      webView.setWebViewClient(new WebViewClient() {
      @Override
      public void onPageFinished(WebView view, String url) {
      }
      
      @Override
      public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
      
         \\ do your stuff
      webView.loadUrl("YOUR SECOND URL");
      
      }
      
      @Override
      public void onReceivedHttpError(
              WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
      }
      
      @Override
      public void onReceivedSslError(WebView view, SslErrorHandler handler,
                                     SslError error) {
      }});webView.loadUrl("YOUR FIRST URL");
      

      【讨论】:

        猜你喜欢
        • 2019-12-12
        • 1970-01-01
        • 2022-01-16
        • 2017-03-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-20
        • 2021-06-26
        相关资源
        最近更新 更多