android - 制作一个搜索谷歌和 URL 的 webview 搜索栏

标签 android webview kotlin searchbar

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

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

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

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


    }
}

最佳答案

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

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;否则,您将需要将该值用作谷歌搜索查询。

关于android - 制作一个搜索谷歌和 URL 的 webview 搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893645/

相关文章:

java - 如何在java中读取对象(java.lang.Object)

javascript - 未在 webview iframe 中执行的预加载脚本

java - 如何动态缩放突发发射流的去抖?

kotlin - 如何反序列化 Android 中的公共(public)/私有(private) P-384 key ?

build.gradle.kts 中的 androidTest Groovy 模拟

Android: radio 组的水平居中对齐

android - 使用 cordova 插件的 mobile-chrome-apps

android - 如何在 android 2.2 中以 malayalam 字体(印度本地语言)设置 textview

java - Android WebView 将它拉到多个 html 页面,这些页面根据用户滑动而改变

android - 从 HTML 加载图像的 Webview 问题