Как загрузить второй URL, если первый не удается загрузить? - Android Studio WebView - PullRequest
0 голосов
/ 06 апреля 2020

Итак, вот некоторый контекст. Я сделал IP-камеру для своего заднего двора, используя MotionEyeOS, чтобы я мог подключаться к ней с помощью локального IP-адреса камер, когда я нахожусь в локальной сети, я также настроил DDNS для него, чтобы я мог подключиться к нему в любом месте с inte rnet , Проблема в том, что когда я пытаюсь подключиться к моей DDNS-ссылке, когда я нахожусь в локальной сети - это не работает. Поэтому я хочу создать приложение, которое будет автоматически подключать меня к камере независимо от того, нахожусь ли я в локальной сети или нет.

Я искал inte rnet пару часов и не делал найди что-нибудь полезное.

Итак, мой вопрос: как мне это сделать? Заметьте, я не ищу, чтобы кто-то написал код для меня, я просто прошу совета в правильном направлении, я сам все выясню.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Проверьте, что ваш 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");
0 голосов
/ 07 апреля 2020

Я сам разобрался.

Я использовал функцию onReceivedError, чтобы посмотреть, не удалось ли загрузить страницу, и в этом случае я просто загрузил бы вторую ссылку. Я использовал этот вопрос stackoverflow для справки.

Вот код, который работает:

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);


    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...