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




title tag definition (23)

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


Intent getWebPage = new Intent(Intent.ACTION_VIEW, Uri.parse(MyLink));          
startActivity(getWebPage);

// OnClick Listener

  @Override
      public void onClick(View v) {
        String webUrl = news.getNewsURL();
        if(webUrl!="")
        Utils.intentWebURL(mContext, webUrl);
      }

// Deine Nutzungsmethode

public static void intentWebURL(Context context, String url) {
        if (!url.startsWith("http://") && !url.startsWith("https://")) {
            url = "http://" + url;
        }
        boolean flag = isURL(url);
        if (flag) {
            Intent browserIntent = new Intent(Intent.ACTION_VIEW,
                    Uri.parse(url));
            context.startActivity(browserIntent);
        }

    }

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.


Einfach, Website-Ansicht über Absicht,

Intent viewIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://www.yoursite.in"));
startActivity(viewIntent);  

Verwenden Sie diesen einfachen Code, um Ihre Website in Android App zu sehen.

Internet-Berechtigung in Manifest-Datei hinzufügen,

<
uses-permission android:name="android.permission.INTERNET" /> 

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");

Probieren Sie das ... für mich gearbeitet!

    public void webLaunch(View view) {
            WebView myWebView = (WebView) findViewById(R.id.webview);
            myWebView.setVisibility(View.VISIBLE);
            View view1=findViewById(R.id.recharge);
            view1.setVisibility(View.GONE);
            myWebView.getSettings().setJavaScriptEnabled(true);
            myWebView.loadUrl("<your link>");

        }

XML-Code: -

 <WebView  xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:visibility="gone"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />

--------- ODER------------------

String url = "";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

Wenn Sie dies nicht programmatisch mit XML tun möchten, können Sie es in Ihrer TextView verwenden:

android:autoLink="web"
android:linksClickable="true"

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 ...


Grundlegende Einführung:

https: // verwendet diese in den "Code", so dass niemand dazwischen sie lesen kann. Dies schützt Ihre Informationen vor Hackern.

http: // nutzt nur den Zweck zu teilen, es ist nicht gesichert.

Über dein Problem:
XML-Design:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.sridhar.sharedpreferences.MainActivity">
   <LinearLayout
       android:orientation="horizontal"
       android:background="#228b22"
       android:layout_weight="1"
       android:layout_width="match_parent"
       android:layout_height="0dp">
      <Button
          android:id="@+id/normal_search"
          android:text="secure Search"
          android:onClick="secure"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="wrap_content" />
      <Button
          android:id="@+id/secure_search"
          android:text="Normal Search"
          android:onClick="normal"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="wrap_content" />
   </LinearLayout>

   <LinearLayout
       android:layout_weight="9"
       android:id="@+id/button_container"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:orientation="horizontal">

      <WebView
          android:id="@+id/webView1"
          android:layout_width="match_parent"
          android:layout_height="match_parent" />

   </LinearLayout>
</LinearLayout>

Design von Aktivitäten:

public class MainActivity extends Activity {
    //securely open the browser
    public String Url_secure="https://www..com";
    //normal purpouse
    public String Url_normal="https://www..com";

    WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView=(WebView)findViewById(R.id.webView1);

    }
    public void secure(View view){
        webView.setWebViewClient(new SecureSearch());
        webView.getSettings().setLoadsImagesAutomatically(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webView.loadUrl(Url_secure);
    }
    public void normal(View view){
        webView.setWebViewClient(new NormalSearch());
        webView.getSettings().setLoadsImagesAutomatically(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webView.loadUrl(Url_normal);

    }
    public class SecureSearch extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String Url_secure) {
            view.loadUrl(Url_secure);
            return true;
        }
    }
    public class NormalSearch extends WebViewClient{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String Url_normal) {
            view.loadUrl(Url_normal);
            return true;
        }
    }
}

Android Manifest.Xml- Berechtigungen:

<uses-permission android:name="android.permission.INTERNET"/>

You face Problems when implementing this:    

1.Aufrufen der Manifest- Berechtigungen
2. Überschreitet den Abstand zwischen der URL
3.Überprüfen Sie, ob Ihre URL korrekt ist oder nicht


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

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

}

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

Einfache Antwort

Sie können das offizielle Beispiel von Android Developer sehen .

/**
 * 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 android.net.Uri Instanz an den zweiten Parameter übergeben, und eine neue Absicht wird basierend auf der angegebenen Daten-URL erstellt.

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

Benötige ich die if Check-Anweisung?

Ja. Die Dokumentation 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 zuerst 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));

Fügen Sie in Ihrem try-Block den folgenden Code ein: Android Intent verwendet den Link innerhalb der URI-Klammern (Uniform Resource Identifier) ​​direkt, um den Speicherort Ihres Links zu ermitteln.

Sie können dies versuchen:

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

Ich denke, das ist das Beste

openBrowser(context, "http://www.google.com")

Schreiben Sie den Code in die globale Klasse

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

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

        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        context.startActivity(browserIntent);
    }

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 besteht in der Verwendung von Intent.ACTION_VIEW anstelle der "android.intent.action.VIEW"


Eine Kurzcodeversion ...

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


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

android.webkit.URLUtil hat die Methode guessUrl(String) die perfekt funktioniert (sogar mit file:// oder data:// ) seit Api level 1 (Android 1.0). Benutzen als:

String url = URLUtil.guessUrl(link);

// url.com            ->  http://url.com/     (adds http://)
// http://url         ->  http://url.com/     (adds .com)
// https://url        ->  https://url.com/    (adds .com)
// url                ->  http://www.url.com/ (adds http://www. and .com)
// http://www.url.com ->  http://www.url.com/ 
// https://url.com    ->  https://url.com/
// file://dir/to/file ->  file://dir/to/file
// data://dataline    ->  data://dataline
// content://test     ->  content://test

In der Aktivität Anruf:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(URLUtil.guessUrl(download_link)));

if (intent.resolveActivity(getPackageManager()) != null)
    startActivity(intent);

Überprüfen Sie den vollständigen guessUrl Code für weitere Informationen.


Benutzerdefinierte Chrome-Tabs sind jetzt verfügbar:

Der erste Schritt ist das Hinzufügen der Custom Tabs Support Library zu Ihrer build.gradle Datei:

dependencies {
    ...
    compile 'com.android.support:customtabs:24.2.0'
}

Und dann, um eine benutzerdefinierte Chrome-Registerkarte zu öffnen:

String url = ¨https://www.google.pt/¨;
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(this, Uri.parse(url));

Für weitere Informationen: https://developer.chrome.com/multidevice/android/customtabs


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

String url = "http://www..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..com"));      
startActivity(intent); 

oder :

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

der kürzeste! :

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

fröhliche Codierung!


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

Auf diese Weise wird eine Methode verwendet, mit der Sie einen beliebigen String anstelle einer festen Eingabe eingeben können. Dies spart einige Codezeilen, wenn sie wiederholt verwendet werden, da Sie nur drei Zeilen benötigen, um die Methode aufzurufen.

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

Mit dieser Methode ist es universell einsetzbar. IT muss nicht in einer bestimmten Aktivität platziert werden, da Sie es folgendermaßen verwenden können:

Intent i = getWebIntent("google.com");
if(i != null)
    startActivity();

Oder wenn Sie es außerhalb einer Aktivität starten möchten, rufen Sie einfach startActivity für die Aktivitätsinstanz auf:

Intent i = getWebIntent("google.com");
if(i != null)
    activityInstance.startActivity(i);

Wie in diesen beiden Codeblöcken zu sehen ist, gibt es einen Null-Check. Dies ist der Fall, wenn null zurückgegeben wird, wenn keine App zur Bearbeitung der Absicht vorhanden ist.

Diese Methode wird standardmäßig auf HTTP gesetzt, wenn kein Protokoll definiert ist, da es Websites gibt, die kein SSL-Zertifikat haben (was Sie für eine HTTPS-Verbindung benötigen) und diese funktionieren nicht mehr, wenn Sie versuchen, HTTPS zu verwenden . Jede Webseite kann immer noch zu HTTPS gezwungen werden, so dass diese Seiten Sie entweder auf HTTPS landen

Da diese Methode externe Ressourcen zum Anzeigen der Seite verwendet, müssen Sie die INternet-Berechtigung nicht deklarieren. Die App, die die Webseite anzeigt, muss das tun





android-browser