Java 我想打字';http://';没有必要。我该怎么办?

Java 我想打字';http://';没有必要。我该怎么办?,java,android,Java,Android,对不起,有点长。但这里有一点 如果我运行这个应用程序。webview显示,然后EditText和按钮(GO按钮)出现在屏幕顶部 如果我键入并按下“开始”按钮。它工作正常 但如果我键入www.google.co.kr并按“go”。它不起作用 大家都知道,如果我们键入一些不带“http://”的URL,它还是会转到那个URL。所以我想让这个代码像那样工作 我没有把这个应用程序的所有代码都放在这篇文章里。但如果必要的话。我可以上传或添加 我应该添加哪个选项?或者我如何才能做到这一点 这是我的应用程序的

对不起,有点长。但这里有一点

如果我运行这个应用程序。webview显示,然后EditText和按钮(GO按钮)出现在屏幕顶部

如果我键入并按下“开始”按钮。它工作正常 但如果我键入www.google.co.kr并按“go”。它不起作用

大家都知道,如果我们键入一些不带“http://”的URL,它还是会转到那个URL。所以我想让这个代码像那样工作

我没有把这个应用程序的所有代码都放在这篇文章里。但如果必要的话。我可以上传或添加

我应该添加哪个选项?或者我如何才能做到这一点

这是我的应用程序的预览图像,不在乎韩语单词:

下面是xml代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1">

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">


<EditText
    android:layout_width="320dp"
    android:layout_height="40dp"
    android:id="@+id/txtURL"
    android:text="http://www.google.co.kr" />

<Button
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:text="Go"
    android:id="@+id/btnGo"
    android:onClick="goURL" />
@SuppressLint("SetJavaScriptEnabled") public class MainActivity extends ActionBarActivity {

    private WebView mWebView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.WebView1);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.loadUrl("http://google.co.kr");
        mWebView.setWebViewClient(new WishWebViewClient());

        mWebView.setWebViewClient(new WebViewClient(){ });

    }

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    private class WishWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    public void goURL(View view){
        TextView tvURL = (TextView)findViewById(R.id.txtURL);
        String url = tvURL.getText().toString();
        Log.i("URL","Opening URL :"+url);

        WebView webView = (WebView)findViewById(R.id.WebView1);
        webView.setWebViewClient(new WebViewClient()); 
        webView.loadUrl(url);

    }


}

我认为这可以通过使用正则表达式检查字符串是否是有效的url来实现

此正则表达式来自:

首先使用此正则表达式检查
url
是否为有效的url。如果url类似于
google.com
,则不匹配。如果url不匹配,请在其开头添加“https://”,然后查看是否匹配。如果这次匹配,则加载url,否则,告诉用户它不是有效的url或类似的内容

Pattern p = Pattern.compile("\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]");
if (!p.matcher(url).matches() &&
        (p.matcher("https://" + url).matches()) {
    url = "https://" + url;
    // load the url
}

在发送请求之前,请尝试使用http://预加文本。

在实际打开URL之前,您的程序正在读取键入的内容,并且可能会执行它想要的任何处理(例如,预加“http://”,如果不存在)。因此,我需要添加“if”,以便我们可以检查是否存在“http://”?如果没有http://。只需添加一行代码,添加http://这就是你的意思吗?这就是我要做的…谢谢你的推荐,我会记住的。这是我第一次听到“regex”。但我会试一试。谢谢你的评论。顺便说一句那一行“\\b(https?| ftp | file)://[-a-zA-Z0-9+&@#/%?=~~|!:,.;]*[-a-zA-Z0-9+&~|/%=~|]”可以这样使用吗?还是我需要调整它?@NorrisZing就这样使用它吧!正则表达式是一个非常强大的东西。我建议你多了解它@如果你认为我的答案能回答你的问题,请考虑通过点击那个标记来接受它!哦,我完全忘了。你难住我了。谢谢你的评论。
"\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"
Pattern p = Pattern.compile("\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]");
if (!p.matcher(url).matches() &&
        (p.matcher("https://" + url).matches()) {
    url = "https://" + url;
    // load the url
}