W ten sposób wykorzystuje się metodę, która pozwala na wprowadzenie dowolnego ciągu zamiast stałego wejścia. Powoduje to zaoszczędzenie niektórych wierszy kodu, jeśli są używane wielokrotnie, ponieważ do wywołania metody potrzebne są tylko trzy wiersze.
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;
}
Zastosowanie tej metody sprawia, że jest ona uniwersalnie użyteczna. IT nie musi być umieszczane w konkretnym działaniu, ponieważ możesz go użyć w następujący sposób:
Intent i = getWebIntent("google.com");
if(i != null)
startActivity();
Lub jeśli chcesz uruchomić go poza działaniem, wystarczy wywołać startActivity w instancji działania:
Intent i = getWebIntent("google.com");
if(i != null)
activityInstance.startActivity(i);
Jak widać w obu tych blokach kodu, istnieje kontrola zerowa. Dzieje się tak, ponieważ zwraca wartość null, jeśli nie ma aplikacji do obsługi zamiaru.
Domyślną metodą tej metody jest HTTP, jeśli nie zdefiniowano żadnego protokołu, ponieważ istnieją strony internetowe, które nie mają certyfikatu SSL (co jest potrzebne do połączenia HTTPS), a te przestaną działać, jeśli spróbujesz użyć HTTPS i nie ma go . Każda witryna może nadal wymuszać przejście na HTTPS, więc strony te i tak trafią na HTTPS
Ponieważ ta metoda wykorzystuje zasoby zewnętrzne do wyświetlenia strony, nie ma potrzeby deklarowania uprawnień INternet. Musi to zrobić aplikacja wyświetlająca stronę internetową