Android WebView не загружает URL после возврата на страницу / активность WebView - PullRequest
0 голосов
/ 16 ноября 2018

В зависимости от соединения WiFi (будь то «включено» или «выключено»), я хочу отобразить одно из двух представлений / действий: Нет соединения или WebView с URL.Я использую BroadcastReceiver для проверки соединения.

Кажется, что все работает нормально, когда приложение загружается, но когда я выключаю WiFi, а затем снова включаю (всякий раз, когда я покидаю WebView, а затем прихожуназад), URL-адрес WebView не загружается (получить сообщение о недоступности веб-страницы).Представление «Нет подключения» работает всегда, поэтому я предполагаю, что с WebView что-то есть.А также, WebView работает, если я добавлю 5-секундную задержку, а затем снова сделаю loadUrl.Я также вижу, что статус WiFi определяется правильно.

Буду признателен за любой ввод.Я гуглил это, но все, что я могу найти, это простые примеры WebView.Я очень плохо знаком с Android, поэтому, может быть, мне не хватает чего-то простого.Заранее благодарим за помощь!

`` `класс WebViewActivity: AppCompatActivity () {

private lateinit var wifiManager : WifiManager
private lateinit var intentMain: Intent
private lateinit var webView: WebView

override fun onCreate(savedInstanceState: Bundle?) {
    Log.d("WIFI_TEST", "WV: onCreate")
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_web_view)

    wifiManager = applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
    intentMain = Intent(this, MainActivity::class.java)
    webView = findViewById(R.id.webview)

    webView.settings.javaScriptEnabled = true
    webview.settings.domStorageEnabled = true
    webView.webViewClient = WebViewClient()
    webView.loadUrl("https://google.com")
}

override fun onStart() {
    super.onStart()
    val intentFilter = IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)
    registerReceiver(wifiStateReceiver, intentFilter)
}

override fun onStop() {
    super.onStop()
    webView.destroy()
    unregisterReceiver(wifiStateReceiver)
}

override fun onBackPressed() {
    if (webView.canGoBack()) {
        webView.goBack()
    } else {
        super.onBackPressed()
    }
}

private val wifiStateReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        val wifiStateExtra = intent.getIntExtra(
            WifiManager.EXTRA_WIFI_STATE,
            WifiManager.WIFI_STATE_UNKNOWN
        )

        when (wifiStateExtra) {
            WifiManager.WIFI_STATE_DISABLED -> {
                Log.d("WIFI_TEST", "WV: OFF")
                startActivity(intentMain)
            }
            WifiManager.WIFI_STATE_ENABLED -> {
                Log.d("WIFI_TEST", "WV: ON")
                // Works with delay with at least 5 sec
                // Why?
                Timer().schedule(5000) {
                    Log.d("WIFI_TEST", "WV: delay")
                    webView.post(Runnable {
                        webView.loadUrl("https://google.com")
                    })
                }
            }
        }
    }
}

}` ``

1 Ответ

0 голосов
/ 16 ноября 2018

Помните, что при повторном включении Wi-Fi, вероятно, он доступен, но вам нужно подождать несколько миллисекунд для подключения.

  WifiManager.WIFI_STATE_ENABLED -> {
                Log.d("WIFI_TEST", "WV: ON")
                // Works with delay with at least 5 sec
                // Why?
                Timer().schedule(5000) {
                    Log.d("WIFI_TEST", "WV: delay")
                    webView.post(Runnable {
                        webView.loadUrl("https://google.com")
                    })
                }
            }

isAvailable () : указывает на наличие подключения к сетивозможно.Сеть недоступна, когда постоянное или полупостоянное условие препятствует возможности подключения к этой сети.

isConnected () : указывает, существует ли сетевое подключение, и возможно ли установить подключения ипередать данные.

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