@Developer-007

Почему у меня в WebView (Android Studio) не открывается сайт, а печатается на белом экране?

Привет всем. Такая проблема: у меня, вместо того, чтобы в webview Android Studio открывался сайт, он высвечивается на белом экране (а когда его для проверки открываешь в другом браузере, открывается не он, а реклама казино с другого сайта, что странно). Как решить эту проблему? Я все уже перепробовал: и загрузку URL поставил после WebViewClient, и hardwareAccelerated false сделал, а результат прежний.

Вот фаргмент кода с LoadingActivity, где из БД считывается домен:
class LoadingActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_loading)

        val database = Firebase.database("https://test-apk-1-fa3be-default-rtdb.firebaseio.com")
        val myRef = database.getReference("db/link")

        if(myRef!=null){
            myRef.addValueEventListener(object: ValueEventListener {

                override fun onDataChange(snapshot: DataSnapshot) {
                    // This method is called once with the initial value and again
                    // whenever data at this location is updated.
                    val value = snapshot.value.toString()
                    toWebActivity(value)
                }

                override fun onCancelled(error: DatabaseError) {
                    toMainActivity()
                }

            })
        } else{
            toMainActivity()
        }

    }
    fun toMainActivity(){
        val intent = Intent(this, MainActivity::class.java)
        startActivity(intent)
    }
    fun toWebActivity(value: String){
        val webIntent = Intent(this,WebActivity::class.java)
        webIntent.putExtra("Домен",value)
        startActivity(webIntent)
    }
}


Это фрагмент кода с WebActivity, где собственно у меня проблема:
class WebActivity : AppCompatActivity() {
    lateinit var binding: ActivityWebBinding
    val uuid = UUID.randomUUID().toString()
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityWebBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val webIntent: Intent = intent
        val domen = webIntent.getStringExtra("Домен")

        val webSettings: WebSettings = binding.webView.settings
        webSettings.javaScriptEnabled = true
        binding.webView.settings.domStorageEnabled = true
        CookieManager.getInstance().setAcceptThirdPartyCookies(binding.webView,true)
        binding.webView.webViewClient = WebViewClient()
        binding.webView.loadUrl("$domen/?packageid=$packageName&usserid=$uuid&getz=Europe/Moscow&getr=utm_source=google-play&utm_medium=organic")

    }

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


Это код с Layout XML файла (для WebActivity):
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".WebActivity">

    <WebView
        android:id="@+id/webView"
        android:hardwareAccelerated="false"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>


А это скрин страницы с WebView, то, что собственно происходит со страницей при тестировании:
644f83f80f648189398784.jpeg
  • Вопрос задан
  • 286 просмотров
Пригласить эксперта
Ответы на вопрос 1
@402d
начинал с бейсика на УКНЦ в 1988
До того как вкручивать самопальные рекламные сети . Обязательно ознакомиться с соглашением плея с разработтчиками и правилами стора. Иначе ваше первое приложение станет и концом (до вечного бана)

Теперь подробнее.
Сплеш активити (ваш лоад) - открывающий произвольный сайт .
Плей очень не любит приложения суть которых сводиться к .lnk файлу
смотрим строку

binding.webView.loadUrl("$domen/?packageid=$packageName&usserid=$uuid&getz=Europe/Moscow&getr=utm_source=google-play&utm_medium=organic")

офигительные уши какой-то рекламной сети сомнительного качества

В выходные дни ловили банерные сети на сливе мобильного трафа на платные финиши.
Если

val database = Firebase.database("https://test-apk-1-fa3be-default-rtdb.firebaseio.com")

это не поднятый вами инстан, то вероятнее левак лезет от них.
Если на целевом сайте, есть подключение js со сторонних сайтов, то под подозрением они.

Вы ниразу не проверили пришедшие данные на валидность.
у вас там и нул может проскочить, и что станно домен должен начинаться с https:// и вы заклыдваетесь , что слеша в конце не будет и т.д.

Далее . Работать на основном потоке с внешними вещами не есть гуд, так как можно словить ANR. А так время холодного/горячего запуска будет велико.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы