我使用代码启动了一个意图:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
为什么网址以" http"开头?是有效但如果url以" HTTP"(大写)开头,它会抛出一个ActivityNotFoundException?这很奇怪,因为网址遵循标准的RFC 2396。
答案 0 :(得分:2)
RFC 2396,sec。 3.1说:
方案名称由一系列以小写字母开头的字符组成,后跟小写字母,数字,加号(" +"),句号("。& #34;),或连字符(" - ")。对于弹性,解释URI的程序应将大写字母视为与方案名称中的小写字母等效(例如,允许" HTTP"以及" http")。
即。大写" HTTP"根据规格不正确。虽然程序应该将大写视为等同于小写,但它不必。
确保URI的方案部分是小写的,这对您来说也很简单,因此很容易避免。
答案 1 :(得分:0)
您可以使用:normalizeScheme()
//Return an equivalent URI with a lowercase scheme component.
// This aligns the Uri with Android best practices for intent filtering.
// For example, "HTTP://www.android.com" becomes "http://www.android.com"
Uri uri = Uri.parse(url).normalizeScheme()
startActivity(new Intent(Intent.ACTION_VIEW, uri))
在此处查看更多信息:normalizeScheme