Cách này sử dụng một phương thức, để cho phép bạn nhập bất kỳ Chuỗi nào thay vì có đầu vào cố định. Điều này không lưu một số dòng mã nếu được sử dụng nhiều lần, vì bạn chỉ cần ba dòng để gọi phương thức.
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;
}
Sử dụng phương pháp này làm cho nó có thể sử dụng phổ biến. CNTT không phải được đặt trong một hoạt động cụ thể, vì bạn có thể sử dụng nó như thế này:
Intent i = getWebIntent("google.com");
if(i != null)
startActivity();
Hoặc nếu bạn muốn bắt đầu nó bên ngoài một hoạt động, bạn chỉ cần gọi startActivity trên ví dụ hoạt động:
Intent i = getWebIntent("google.com");
if(i != null)
activityInstance.startActivity(i);
Như đã thấy trong cả hai khối mã này, có một kiểm tra null. Điều này là vì nó trả về null nếu không có ứng dụng để xử lý ý định.
Phương thức này mặc định là HTTP nếu không có giao thức được xác định, vì có những trang web không có chứng chỉ SSL (những gì bạn cần cho kết nối HTTPS) và chúng sẽ ngừng hoạt động nếu bạn cố sử dụng HTTPS và nó không ở đó . Bất kỳ trang web nào vẫn có thể buộc phải HTTPS, vì vậy những bên đó sẽ đưa bạn đến HTTPS bằng mọi cách
Vì phương pháp này sử dụng các tài nguyên bên ngoài để hiển thị trang, nên bạn không cần phải khai báo quyền INternet. Ứng dụng hiển thị trang web phải làm điều đó