Frage Wie kann ich eine URL im Android-Webbrowser von meiner Anwendung aus öffnen?


Wie öffne ich eine URL aus Code im integrierten Webbrowser und nicht in meiner Anwendung?

Ich habe es versucht:

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();
}

aber ich habe eine Ausnahme:

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

1073
2018-02-04 17:51


Ursprung


Antworten:


Versuche dies:

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

Das funktioniert gut für mich.

Was das fehlende "http: //" betrifft, würde ich einfach so etwas tun:

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

Ich würde wahrscheinlich auch Ihren EditText vorbelegen, dass der Benutzer eine URL mit "http: //" eintippt.


2036
2018-02-04 18:01



Ein üblicher Weg, dies zu erreichen, ist mit dem nächsten Code:

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

das könnte in eine kurze Code-Version geändert werden ...

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

oder :

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

der kürzeste! :

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

fröhliche Codierung!


60
2018-05-27 14:20



In 2.3 hatte ich mehr Glück mit

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

Der Unterschied ist die Verwendung von Intent.ACTION_VIEW anstatt die Zeichenfolge "android.intent.action.VIEW"


47
2018-03-16 15:35



Einfache Antwort

Du kannst sehen das offizielle Beispiel von 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);
    }
}

Wie es funktioniert

Bitte werfen Sie einen Blick auf den Konstruktor von Intent:

public Intent (String action, Uri uri)

Sie können durch android.net.Uri Instanz zum zweiten Parameter, und basierend auf der angegebenen Daten-URL wird eine neue Absicht erstellt.

Und dann, einfach anrufen startActivity(Intent intent) um eine neue Aktivität zu starten, die mit der Absicht mit der angegebenen URL gebündelt ist.

Brauche ich das? if Aussage überprüfen?

Ja. Das Dokumente sagt:

Wenn auf dem Gerät keine Apps vorhanden sind, die die implizite Absicht erhalten, stürzt Ihre App ab, wenn sie startActivity () aufruft. Um zunächst zu überprüfen, ob eine App vorhanden ist, um die Absicht zu erhalten, rufen Sie resolveActivity () in Ihrem Intent-Objekt auf. Wenn das Ergebnis nicht null ist, gibt es mindestens eine App, die die Absicht verarbeiten kann, und es ist sicher, startActivity () aufzurufen. Wenn das Ergebnis null ist, sollten Sie die Absicht nicht verwenden und, wenn möglich, sollten Sie die Funktion deaktivieren, die die Absicht aufruft.

Bonus

Sie können in eine Zeile schreiben, wenn Sie die Intent-Instanz wie folgt erstellen:

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

36
2017-08-24 05:06



Versuche dies:

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

oder wenn Sie möchten, dass der Webbrowser in Ihrer Aktivität geöffnet wird, dann machen Sie folgendes:

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

Wenn Sie die Zoomsteuerung in Ihrem Browser verwenden möchten, können Sie Folgendes verwenden:

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

24
2017-08-31 10:10



Wenn Sie dem Benutzer einen Dialog mit allen Browser-Listen zeigen möchten, damit er bevorzugt auswählen kann, hier ein Beispielcode:

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 :)

}

20
2018-01-09 08:55



Genau wie die Lösungen, die andere geschrieben haben (die gut funktionieren), möchte ich die gleiche Sache beantworten, aber mit einem Tipp, den die meisten meiner Meinung nach bevorzugen würden.

Falls Sie möchten, dass die App in einer neuen Aufgabe geöffnet wird, unabhängig von Ihrer eigenen, können Sie diesen Code verwenden, anstatt auf demselben Stapel zu bleiben:

final Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

15
2018-04-08 09:19



andere Option In URL in derselben Anwendung mit Webview laden

webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");

14
2018-06-25 08:01



Du kannst auch diesen Weg gehen

In XML:

<?xml version="1.0" encoding="utf-8"?>
<WebView  
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

Im Java-Code:

public class WebViewActivity extends Activity {

private WebView webView;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);

    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://www.google.com");

 }

}

In Manifest vergessen Sie nicht, Internet-Erlaubnis hinzuzufügen ...


10
2017-12-19 06:04



Webview kann verwendet werden, um URL in Ihrer Anwendung zu laden. URL kann vom Benutzer in der Textansicht bereitgestellt werden oder Sie können ihn fest codieren.

Vergessen Sie auch nicht Internet-Berechtigungen in AndroidManifest.

String url="http://developer.android.com/index.html"

WebView wv=(WebView)findViewById(R.id.webView);
wv.setWebViewClient(new MyBrowser());
wv.getSettings().setLoadsImagesAutomatically(true);
wv.getSettings().setJavaScriptEnabled(true);
wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv.loadUrl(url);

private class MyBrowser extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
}

6
2017-11-12 21:41



Eine Kurzcodeversion ...

 if (!strUrl.startsWith("http://") && !strUrl.startsWith("https://")){
     strUrl= "http://" + strUrl;
 }


 startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(strUrl)));

5
2017-12-03 16:24