【问题标题】:Make a webview search bar that searches Google and URL's制作一个搜索 Google 和 URL 的 webview 搜索栏
【发布时间】:2019-01-24 09:26:37
【问题描述】:

我今年 16 岁,正在努力学习 Kotlin,我很新。我想创建一个搜索栏,既可以搜索 Google,也可以打开您输入的任何 URL。我试图使用 if else 语句,例如:

  • if 前三个字母是“www”。然后使用等于“https://”的字符串 url,
  • else 使用等于“google.com/search?q="; 的字符串 start_url。

我只是不知道该怎么做,我已经尝试在互联网上寻求帮助,但我无法做到。

URLUtil.isValidUrl(url) 不起作用,因为它仍然只加载 Google 搜索

我欢迎任何 cmets 尝试帮助我进一步学习和改进我的代码,即使它与我的问题无关。指出我的代码中的任何错误或可以改进的地方,我知道它并不完美,谢谢!

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-----------------//


    }
}

【问题讨论】:

标签: android webview kotlin searchbar


【解决方案1】:

简单的内置正则表达式模式:

import android.util.Patterns


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

if (isAddress) {
    this@WebpageFragment.mBinding.webpageWebView
        .loadUrl(address)
} else {
    this@WebpageFragment.mBinding.webpageWebView.loadUrl(
        "https://www.google.com/search?q=$address"
    )
}

说明:首先您需要检查字符串是否为 URL。如果是 URL,您将使用 webview 加载该 URL;否则,您将需要将该值用作 google 搜索查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    相关资源
    最近更新 更多