簡體   English   中英

如何確保Uri.parse()在Java / Android中始終返回有效值?

[英]How to make sure Uri.parse() always returns valid values in java/android?

在Java中(在android中很好,但是我認為這是一個普遍的問題),

我做這個

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("www.google.ca"));
startActivity(browserIntent);

但隨后崩潰。 然后我嘗試了這個:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.ca"));
startActivity(browserIntent);

那行得通。 似乎添加http://使其起作用。

該鏈接是客戶端將輸入的內容,因此無法保證他們輸入的內容將是有效的。 有沒有一種方法可以修復此鏈接,以確保它可以在Uri.parse()上使用,因此可以在所有情況下使用? 如果它無效,那么我應該能夠檢測到它。

謝謝

檢查字符串中的“ http://”或“ https://”,如果找到則將其傳遞給URI或在開頭添加。

檢查:

str1.toLowerCase().contains(str2.toLowerCase())

追加:

str3 = "htttp://"+str2

是的,您無法確定會得到什么輸入。 因此,我認為您可以使用正則表達式模式進行檢查。 我認為這種模式有效。

Pattern pattern=Pattern.compile("^(http|https)://[a-z|A-z]{1,}.[a-z|A-Z]{1,}.[a-z|A-Z]{2,}$");

這將導致可以確定解析的URL。 但是對於大多數人來說,他們傾向於輸入類似www.xxx.com之類的內容,因此我建議使用以下模式再次檢查以前的模式是否不匹配

Pattern pattern=Pattern.compile("^[a-z|A-z]{1,}.[a-z|A-Z]{1,}.[a-z|A-Z]{2,}$");

並在網址開頭添加http://

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM