Создайте панель поиска в веб-просмотре, которая выполняет поиск в Google и URL-адресах.

Мне 16 и я пытаюсь изучить Kotlin, я новичок. Я хочу создать панель поиска, которая выполняет поиск как в Google, так и может открывать любой введенный вами URL-адрес. Я пытался использовать оператор if else, например:

  • if первые три буквы были "www." затем используйте URL-адрес строки, равный «https://»,
  • else используйте строку start_url, которая равна "google.com/search?q=";.

Я просто не знаю, как это сделать, и я пытался искать помощь в Интернете, но не смог.

URLUtil.isValidUrl(url) не будет работать, потому что он по-прежнему загружает только поиск Google.

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

package com.example.corie.quicklinks.mainpages

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.asynclayoutinflater.R.id.text
import android.webkit.WebChromeClient
import android.webkit.WebViewClient
import com.example.corie.quicklinks.R
import com.example.corie.quicklinks.R.string.start_url
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //------------------WEBVIEW-----------------//
        webViewOne.webChromeClient = WebChromeClient()
        webViewOne.isVerticalScrollBarEnabled = false
        webViewOne.run{
            webViewOne.loadUrl("https://" + getString(start_url))
        }


        goBtn.setOnClickListener{
            webViewOne.loadUrl("https://www.google.com/search?q=" + editText.text.toString())

        }
        backBtn.setOnClickListener {
            if (webViewOne.canGoBack())
                webViewOne.goBack()
        }
        nextBtn.setOnClickListener {
            if (webViewOne.canGoForward())
                webViewOne.goForward()
        }
        //------------------WEBVIEW-----------------//


    }
}

person Community    schedule 17.08.2018    source источник
comment
Я пытался использовать оператор if else, например, если бы первые три буквы были www. затем используйте строку url, равную https://, иначе используйте строку start_url, равную google.com/search?q=. Я просто не знаю, как это сделать, и я пытался найти помощь в Интернете, но я просто не мог   -  person    schedule 17.08.2018
comment
Итак, в основном вам нужно проверить, является ли строка допустимым URL-адресом? Взгляните на этот stackoverflow.com/questions/4905075/   -  person StarterPack    schedule 17.08.2018
comment
Одна вещь, которую вы можете сделать, это сопоставить содержимое панели поиска с шаблоном, например. как в этом вопросе. Если он совпадает, загрузите URL-адрес, если нет, выполните запрос. К сожалению, я не могу помочь с кодом, но это должно быть хорошей отправной точкой.   -  person Michael Dodd    schedule 17.08.2018
comment
спасибо всем за ответы, которые были быстрыми, и я собираюсь изучить каждый. @glennsl Это первый раз, когда я задаю здесь вопрос, извините, если я сделал это неправильно, лмао. Но спасибо Майклу и стартовому пакету   -  person    schedule 17.08.2018
comment
@StarterPack, который не работает, я попробовал, и единственное, что загрузится, это поиск Google, а не URL.   -  person    schedule 17.08.2018
comment
Не могли бы вы отредактировать свой вопрос, чтобы показать, какой именно код не работает?   -  person StarterPack    schedule 17.08.2018


Ответы (1)


Простой со встроенным шаблоном регулярного выражения:

import android.util.Patterns


val isAddress = Patterns.WEB_URL.matcher(address).matches()

if (isAddress) {
    [email protected]
        .loadUrl(address)
} else {
    [email protected](
        "https://www.google.com/search?q=$address"
    )
}
person dphans    schedule 06.11.2019