In questo modo utilizza un metodo per consentire di immettere qualsiasi stringa anziché disporre di un input fisso. Ciò consente di risparmiare alcune righe di codice se utilizzato più volte, poiché sono necessarie solo tre righe per chiamare il metodo.
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;
}
L'uso di questo metodo lo rende universalmente utilizzabile. L'IT non deve essere inserito in un'attività specifica, in quanto è possibile utilizzarlo in questo modo:
Intent i = getWebIntent("google.com");
if(i != null)
startActivity();
O se vuoi avviarlo al di fuori di un'attività, devi semplicemente chiamare startActivity sull'istanza dell'attività:
Intent i = getWebIntent("google.com");
if(i != null)
activityInstance.startActivity(i);
Come si vede in entrambi questi blocchi di codice, è presente un controllo null. Questo perché restituisce null se non esiste un'app per gestire l'intento.
Per impostazione predefinita, questo metodo è HTTP se non è stato definito alcun protocollo, in quanto vi sono siti Web che non dispongono di un certificato SSL (ciò che è necessario per una connessione HTTPS) e smetteranno di funzionare se si tenta di utilizzare HTTPS e non è presente . Qualsiasi sito Web può comunque passare a HTTPS, quindi quelle parti ti atterrano su HTTPS in entrambi i modi
Poiché questo metodo utilizza risorse esterne per visualizzare la pagina, non è necessario dichiarare l'autorizzazione INternet. L'app che visualizza la pagina Web deve farlo