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