这种方式使用一种方法,允许您输入任何字符串而不是固定输入。如果重复使用,这确实会节省一些代码行,因为您只需要三行来调用该方法。
public Intent getWebIntent(String url) {
//Make sure it is a valid URL before parsing the URL.
if(!url.contains("http://") && !url.contains("https://")){
//If it isn't, just add the HTTP protocol at the start of the URL.
url = "http://" + url;
}
//create the intent
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)/*And parse the valid URL. It doesn't need to be changed at this point, it we don't create an instance for it*/);
if (intent.resolveActivity(getPackageManager()) != null) {
//Make sure there is an app to handle this intent
return intent;
}
//If there is no app, return null.
return null;
}
使用这种方法使其普遍可用。IT 不必放在特定的活动中,因为您可以像这样使用它:
Intent i = getWebIntent("google.com");
if(i != null)
startActivity();
或者,如果您想在活动之外启动它,只需在活动实例上调用 startActivity:
Intent i = getWebIntent("google.com");
if(i != null)
activityInstance.startActivity(i);
正如在这两个代码块中看到的那样,有一个空检查。这是因为如果没有应用程序来处理意图,它会返回 null。
如果没有定义协议,则此方法默认为 HTTP,因为有些网站没有 SSL 证书(您需要 HTTPS 连接),如果您尝试使用 HTTPS 并且它不存在,这些网站将停止工作. 任何网站仍然可以强制使用 HTTPS,因此无论哪种方式,这些方面都会让您使用 HTTPS
由于此方法使用外部资源显示页面,因此无需您声明 Internet 权限。显示网页的应用程序必须这样做