IT-Swarm.Net

Cum pot deschide o adresă URL în browserul web Android din aplicația mea?

Cum să deschid un URL din cod în browserul web încorporat, mai degrabă decât în ​​aplicația mea?

Am incercat asta:

try {
    Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(download_link));
    startActivity(myIntent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(this, "No application can handle this request."
        + " Please install a webbrowser",  Toast.LENGTH_LONG).show();
    e.printStackTrace();
}

dar am o excepție:

No activity found to handle Intent{action=Android.intent.action.VIEW data =www.google.com
1221
Arutha

Incearca asta:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);

Asta merge bine pentru mine.

Cât despre „http: //” lipsă aș face doar așa ceva:

if (!url.startsWith("http://") && !url.startsWith("https://"))
   url = "http://" + url;

Probabil, de asemenea, aș pre-popula EditText-ul dvs. pentru ca utilizatorul să tasteze o adresă URL cu „http: //”.

2270
Mark B

o modalitate comună de a realiza acest lucru este cu următorul cod:

String url = "http://www.stackoverflow.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url)); 
startActivity(i); 

care poate fi schimbat într-o versiune de cod scurt ...

Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse("http://www.stackoverflow.com"));      
startActivity(intent); 

sau:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com")); 
startActivity(intent);

cel mai scurt! :

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.stackoverflow.com")));

codare fericită!

75
Elenasys

În 2.3 am avut mai mult noroc cu

final Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url));
activity.startActivity(intent);

Diferența este utilizarea Intent.ACTION_VIEW mai degrabă decât a șirului "Android.intent.action.VIEW"

54
MikeNereson

Răspuns simplu

Puteți vedea eșantionul oficial de la Android Developer .

/**
 * Open a web page of a specified URL
 *
 * @param url URL to open
 */
public void openWebPage(String url) {
    Uri webpage = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

Cum functioneaza

Vă rugăm să aruncați o privire la constructorul IntentNAME _ :

public Intent (String action, Uri uri)

Puteți trece Android.net.Uri instanță la al doilea parametru și o nouă intenție este creată pe baza adresei URL date.

Și apoi, apelează pur și simplu la startActivity(Intent intent) pentru a începe o nouă activitate, care este inclusă în Intent cu URL-ul dat.

Am nevoie de instrucțiunea ifname__?

Da. docs spune:

Dacă nu există aplicații pe dispozitiv care să poată primi intenția implicită, aplicația dvs. se va bloca atunci când apelează startActivity (). Pentru a verifica mai întâi dacă există o aplicație pentru a primi intenția, apelați resolActivity () pe obiectul dvs. Intent. Dacă rezultatul este nul, există cel puțin o aplicație care poate gestiona intenția și este sigur să apelați startActivity (). Dacă rezultatul este nul, nu ar trebui să folosești intenția și, dacă este posibil, ar trebui să dezactivezi caracteristica care invocă intenția.

Primă

Puteți scrie într-o singură linie atunci când creați instanța Intent, precum mai jos:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
50
itiskj

Incearca asta:

Uri uri = Uri.parse("https://www.google.com");
startActivity(new Intent(Intent.ACTION_VIEW, uri));

sau dacă doriți, atunci browserul web se deschide în activitatea dvs., atunci faceți acest lucru:

WebView webView = (WebView) findViewById(R.id.webView1);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
webView.loadUrl(URL);

și dacă doriți să utilizați controlul zoom în browser, puteți utiliza:

settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);
30
nikki

Dacă doriți să afișați utilizatorului un dialog cu toată lista de browser, astfel încât să poată alege preferința, iată codul de exemplu:

private static final String HTTPS = "https://";
private static final String HTTP = "http://";

public static void openBrowser(final Context context, String url) {

     if (!url.startsWith(HTTP) && !url.startsWith(HTTPS)) {
            url = HTTP + url;
     }

     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
     context.startActivity(Intent.createChooser(intent, "Choose browser"));// Choose browser is arbitrary :)

}
22
Dmytro Danylyk