如果第一个加载失败,如何加载第二个 URL? - Android Studio WebView
How to load second URL if first one fails to load? - Android Studio WebView
所以这里有一些背景。我使用 MotionEyeOS 为我的后院制作了 IP 摄像头,当我在本地网络上时,我可以使用摄像头本地 IP 地址连接到它,我还为它设置了 DDNS,这样我就可以从互联网的任何地方连接到它。问题是当我在本地网络上尝试连接 DDNS link 时 - 它不起作用。所以我想制作一个应用程序,无论我是否在本地网络上,它都会自动将我连接到相机。
我已经在互联网上搜索了几个小时,但没有找到任何有用的信息。
所以我的问题是我该怎么做?请注意,我不是在找人为我编写代码,我只是在寻求正确方向的指导,其余的我会自己解决。
提前致谢!
我自己想出来了。
我使用函数 onReceivedError
来查看页面是否加载失败,如果是这样我就加载第二个 link。我使用了 Whosebug 问题作为参考。
这是有效的代码:
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);
}
}
检查你的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");
所以这里有一些背景。我使用 MotionEyeOS 为我的后院制作了 IP 摄像头,当我在本地网络上时,我可以使用摄像头本地 IP 地址连接到它,我还为它设置了 DDNS,这样我就可以从互联网的任何地方连接到它。问题是当我在本地网络上尝试连接 DDNS link 时 - 它不起作用。所以我想制作一个应用程序,无论我是否在本地网络上,它都会自动将我连接到相机。
我已经在互联网上搜索了几个小时,但没有找到任何有用的信息。
所以我的问题是我该怎么做?请注意,我不是在找人为我编写代码,我只是在寻求正确方向的指导,其余的我会自己解决。
提前致谢!
我自己想出来了。
我使用函数 onReceivedError
来查看页面是否加载失败,如果是这样我就加载第二个 link。我使用了
这是有效的代码:
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);
}
}
检查你的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");