Uygulamamdan Android'in web tarayıcısında bir URL'yi nasıl açabilirim?


1344

Uygulamam yerine yerleşik web tarayıcısında koddan bir URL nasıl açılır?

Bunu denedim:

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

ama bir istisnam var:

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

6
Bunun nedeni olduğunu düşünüyorum: android-developers.blogspot.com/2009/12/…
Arutha

1
Bu neden bazı cihazlarda çalışmıyor? bir web tarayıcısı olsa bile, ActivityNotFoundException öğesine gider.

@Manu ile aynı sorunu görüyorum. Nexus 6'ya temel kurulumda krom var, ancak istisna oluşturan bağlantılar var.
Brill Pappin

Yanıtlar:


2456

Bunu dene:

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

Bu benim için iyi çalışıyor.

Eksik "http: //" gelince ben sadece böyle bir şey yapmak istiyorum:

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

Ayrıca muhtemelen "http: //" ile bir URL yazıyor EditText önceden doldurmak.


2
Kodunuz ve mbaird'in aynı olmadığı dışında, gönderilenler için söyleyebileceğim şey dışında. URL'nizin http://şemaya sahip olduğundan emin olun - gösterilen istisna URL'nizin şemadan yoksun olduğunu gösterir.
CommonsWare

5
Evet ! Http: //! URL kullanıcı tarafından girilir, otomatik olarak biçimlendirmenin bir yolu var mı?
Arutha

4
URLUtil, kullanıcı tarafından girilen "url" Dizelerini kontrol etmek için harika bir yoldur
Dan

90
if (!url.startsWith("http://") && !url.startsWith("https://"))sizi file: // gibi URL'lere yönlendirebilecek ve bazı iyi kullanımları kırabilecek yaygın bir hatadır. URI sınıfıyla uri'yi ayrıştırmaya çalışın ve bir şema olup olmadığını kontrol edin.
Hayırsa

22
İle null kontrol gerekir resolveCheck. Resmi belgelere bakın : Dikkat: Cihazda örtülü amacı alabilecek hiçbir uygulama yoksa, uygulamanız startActivity () öğesini çağırdığında kilitlenir. Bir uygulamanın amacı almak üzere var olduğunu doğrulamak için, Niyet nesnenizde resolActivity () öğesini çağırın.
kenju

90

Bunu başarmanın yaygın bir yolu bir sonraki koddur:

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

kısa kod sürümüyle değiştirilebilir ...

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

veya:

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

en kısa! :

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

mutlu kodlama!


57

Basit Yanıt

Görebilirsiniz Android Geliştirici resmi numuneyi .

/**
 * 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);
    }
}

Nasıl çalışır

Lütfen aşağıdaki kurucuya bir göz atın Intent:

public Intent (String action, Uri uri)

Geçebilirsin android.net.UriÖrneği 2. parametreye ve verilen veri URL'sine göre yeni bir Amaç oluşturulur.

Ve sonra, sadece startActivity(Intent intent) belirtilen URL ile Niyet ile birlikte gelen yeni bir Etkinlik başlatmak için .

İhtiyacım var mı ifÇek ekstresine mı?

Evet. Docs diyor ki:

Cihazda örtük amacı alabilecek hiçbir uygulama yoksa, uygulamanız startActivity () öğesini çağırdığında kilitlenir. Bir uygulamanın amacı almak üzere var olduğunu doğrulamak için, Niyet nesnenizde resolActivity () öğesini çağırın. Sonuç null değilse, amacı gerçekleştirebilecek en az bir uygulama vardır ve startActivity () öğesini çağırmak güvenlidir. Sonuç null ise, amacı kullanmamalısınız ve mümkünse amacı başlatan özelliği devre dışı bırakmalısınız.

Bonus

Aşağıdaki gibi Niyet örneğini oluştururken tek bir satıra yazabilirsiniz:

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

3
Bu, sağlanan url'nin içinde http olduğunu varsayar .
IgorGanapolsky

56

2.3 yılında, daha iyi şansım oldu

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

Aradaki fark Intent.ACTION_VIEWString yerine kullanmak"android.intent.action.VIEW"


1
ne farklı?
user1324936

1
Bu cevap bana çok yardımcı oldu. Aradaki farkın ne olduğunu bilmiyorum, ancak 2.3 ile ilgili bir sorun yaşadık. Uygulamadaki farkın ne olduğunu bilen var mı?
Innova

2
Android Geliştiricisine göre: bu cevap - "Belirli bir eylemle niyet oluşturun. Diğer tüm alanlar (veri, tür, sınıf) boştur." ve kabul edilen cevap - "Belirli bir eylemle ve belirli bir veri URL'si için bir amaç oluşturun."
Teo Inke

30

Bunu dene:

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

ya da isterseniz web tarayıcısı etkinliğinizde açılırsa şunu yapın:

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

ve tarayıcınızda yakınlaştırma kontrolünü kullanmak istiyorsanız şunları kullanabilirsiniz:

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

4
Eklentilerin ve benzerlerinin WebView'da devre dışı bırakıldığını ve İNTERNET izinlerinin gerekli olacağını unutmayın. ( referans )

22

Kullanıcıya tüm tarayıcı listesiyle bir diyalog göstermek istiyorsanız, tercih edileni seçebilmesi için örnek kod:

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

}

5
amacı kaldırabilecek birden fazla uygulama varsa, sistem otomatik olarak bir seçici seçecektir, değil mi?
Jeffrey Blattman

@ xmen-wk, çünkü url httpveya ile eter başlatabilir httpsve java'da 'sihirli dizeleri' sabit olarak bildirmek iyi bir uygulamadır.
Dmytro Danylyk

teşekkürler, bilmiyordum context.startActivity. Harici bir sınıftan çağırırken çok yararlı
WuerfelDev

18

Tıpkı diğerlerinin yazdığı çözümler gibi (bu iyi çalışıyor), aynı şeyi cevaplamak istiyorum, ancak en çok kullanmayı tercih edeceğini düşündüğüm bir ipucu ile.

Uygulamanın, aynı yığın üzerinde kalmak yerine, kendi başınıza bağımsız olarak yeni bir görevde açmaya başlamasını isterseniz, bu kodu kullanabilirsiniz:

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.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(intent);

URL'yi Chrome Özel Sekmeler'de açmanın bir yolu da vardır . Kotlin Örneği:

@JvmStatic
fun openWebsite(activity: Activity, websiteUrl: String, useWebBrowserAppAsFallbackIfPossible: Boolean) {
    var websiteUrl = websiteUrl
    if (TextUtils.isEmpty(websiteUrl))
        return
    if (websiteUrl.startsWith("www"))
        websiteUrl = "http://$websiteUrl"
    else if (!websiteUrl.startsWith("http"))
        websiteUrl = "http://www.$websiteUrl"
    val finalWebsiteUrl = websiteUrl
    //https://github.com/GoogleChrome/custom-tabs-client
    val webviewFallback = object : CustomTabActivityHelper.CustomTabFallback {
        override fun openUri(activity: Activity, uri: Uri?) {
            var intent: Intent
            if (useWebBrowserAppAsFallbackIfPossible) {
                intent = Intent(Intent.ACTION_VIEW, Uri.parse(finalWebsiteUrl))
                intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY
                        or Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
                if (!CollectionUtil.isEmpty(activity.packageManager.queryIntentActivities(intent, 0))) {
                    activity.startActivity(intent)
                    return
                }
            }
            // open our own Activity to show the URL
            intent = Intent(activity, WebViewActivity::class.java)
            WebViewActivity.prepareIntent(intent, finalWebsiteUrl)
            activity.startActivity(intent)
        }
    }
    val uri = Uri.parse(finalWebsiteUrl)
    val intentBuilder = CustomTabsIntent.Builder()
    val customTabsIntent = intentBuilder.build()
    customTabsIntent.intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_NO_HISTORY
            or Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET or Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
    CustomTabActivityHelper.openCustomTab(activity, customTabsIntent, uri, webviewFallback)
}

Yeni bir görev yapmak, web tarayıcısında sorun olması durumunda kaynak uygulamayı hatalardan ve çökmelerden koruyacak mı?
Orijinal Android

@TheOriginalAndroid Çökme ve web tarayıcısı ile ne ilgisi olduğunu anlamıyorum. Lütfen ne yapmaya çalıştığınızı açıklayın.
android geliştirici

Yanıtınız için teşekkürler. Gönderiniz ilginç. Özellikle web lansmanı için yeni bir görev açmanın yararı nedir?
Orijinal Android

2
@TheOriginalAndroid Sadece kullanıcı uygulamanıza geri dönebilir ve sonra tekrar web tarayıcısına geri dönebilir. Son görevler ekranını açarsanız, burada bir görev yerine 2 görev görürsünüz. Ayrıca, tek bir görevde (uygulamanızın görevine ait olan) bir web tarayıcısı küçük resmi görmek yerine 2'yi göreceksiniz: uygulamanızdan biri ve web tarayıcısından bir diğeri. Bence bu şekilde kafa karıştırıcı değil.
android geliştirici

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESETkullanımdan kaldırıldı
Pratik Butani

17

diğer seçenek Webview kullanarak Aynı Uygulamada URL'yi Yükle

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

Eklentilerin ve benzerlerinin WebView'da devre dışı bırakıldığını ve İNTERNET izinlerinin gerekli olacağını unutmayın. ( referans )

12

Bu şekilde de gidebilirsin

Xml dilinde:

<?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" />

Java kodunda:

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

 }

}

Manifest'te internet izni eklemeyi unutmayın ...


Bu ilginç ve farklı. Sanırım bu şekilde kullanıcı uygulamamda bir web tarayıcısı görüyor. Bu doğru mu? Ben oy kullanıyorum.
Orijinal Android

9

Web görünümü uygulamanıza URL yüklemek için kullanılabilir. URL, kullanıcı tarafından metin görünümünde sağlanabilir veya sabit kodlanabilir.

Ayrıca AndroidManifest'te internet izinlerini de unutmayın.

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

Kısa kod sürümü ...

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


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

6

Deneme bloğunuzda, aşağıdaki kodu yapıştırın, Android Intent, bağlantınızın konumunu tanımlamak için doğrudan URI (Tekdüzen Kaynak Tanımlayıcı) parantez içindeki bağlantıyı kullanır.

Bunu deneyebilirsiniz:

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

5

Basit ve En İyi Uygulama

Yöntem 1:

String intentUrl="www.google.com";
Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(intentUrl));
    if(webIntent.resolveActivity(getPackageManager())!=null){
        startActivity(webIntent);    
    }else{
      /*show Error Toast 
              or 
        Open play store to download browser*/
            }

Yöntem 2:

try{
    String intentUrl="www.google.com";
    Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(intentUrl));
        startActivity(webIntent);
    }catch (ActivityNotFoundException e){
                /*show Error Toast
                        or
                  Open play store to download browser*/
    }

Kullanım context!!.packageManageryerine getPackageManager()bir de Fragment.
CoolMind

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

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

hoş geldiniz, acemi. lütfen orijinal kodda olmayan değişkenleri bildirerek cevabı daha eksiksiz hale getirin.
tony gil


3

Chrome özel sekmeleri artık kullanılabilir:

İlk adım build.gradle dosyanıza Özel Sekmeler Destek Kitaplığı eklemektir:

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

Ardından, bir krom özel sekmesi açmak için:

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

Daha fazla bilgi için: https://developer.chrome.com/multidevice/android/customtabs


2

Mark B'nin cevabına ve aşağıdaki yorumlara dayanarak:

protected void launchUrl(String url) {
    Uri uri = Uri.parse(url);

    if (uri.getScheme() == null || uri.getScheme().isEmpty()) {
        uri = Uri.parse("http://" + url);
    }

    Intent browserIntent = new Intent(Intent.ACTION_VIEW, uri);

    if (browserIntent.resolveActivity(getPackageManager()) != null) {
        startActivity(browserIntent);
    }
}

2

android.webkit.URLUtilberi (Android 1.0) beri ( veya guessUrl(String)ile bile ) mükemmel çalışıyor yöntemi vardır . Kullanım şekli:file://data://Api level 1

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

Etkinlik çağrısında:

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

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

Daha fazla bilgi için guessUrlkodun tamamını kontrol edin .


2

Tamam, her yanıtı kontrol ettim ancak hangi uygulamanın kullanıcının kullanmak istediği URL ile derin bağlantısı var?

Bugün bu davayı aldım ve cevap browserIntent.setPackage("browser_package_name");

Örneğin :

   Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
    browserIntent.setPackage("com.android.chrome"); // Whatever browser you are using
    startActivity(browserIntent);

Teşekkür ederim!


İyi cevap. Belirli bir tarayıcıda (doğrudan) bir Niyet URL'sinin nasıl açılacağını açıklar ve tarayıcı seçen sisteme güvenmez.
Mr-IDE

2

Amaç yoluyla basit, web sitesi görünümü,

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

android uygulamasında web sitenizi görüntülemek için bu basit kodu kullanın.

Manifest dosyasına internet izni ekleyin,

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

2
String url = "https://www.thandroid-mania.com/";
if (url.startsWith("https://") || url.startsWith("http://")) {
    Uri uri = Uri.parse(url);
    Intent intent = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(intent);
}else{
    Toast.makeText(mContext, "Invalid Url", Toast.LENGTH_SHORT).show();
}

Bu hata geçersiz URL nedeniyle oluştu, Android OS verileriniz için eylem görünümü bulamıyor. Böylece URL'nin geçerli olup olmadığını doğruladınız.


1

Bence bu en iyisi

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

Global sınıfa aşağıdaki kodu yazın

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

1

Bu şekilde, sabit bir girdi yerine herhangi bir String girmenize izin veren bir yöntem kullanılır. Bu, yöntemi çağırmak için yalnızca üç satıra ihtiyacınız olduğu için, tekrarlanan miktarda kullanıldığında bazı kod satırlarını kaydeder.

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

Bu yöntemi kullanmak, evrensel olarak kullanılabilir olmasını sağlar. Bunun gibi kullanabileceğiniz için BT'nin belirli bir etkinliğe yerleştirilmesi gerekmez:

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

Veya bir etkinliğin dışında başlatmak istiyorsanız, etkinlik örneğinde startActivity'yi çağırmanız yeterlidir:

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

Bu kod bloklarının her ikisinde de görüldüğü gibi bir null kontrol vardır. Niyeti işleyecek bir uygulama yoksa null değerini döndürür.

SSL sertifikası olmayan (HTTPS bağlantısı için gerekenler) web siteleri olduğundan ve HTTPS kullanmaya çalışırsanız ve orada değilse, bu yöntem varsayılan olarak HTTP olarak varsayılan olarak ayarlanır. . Herhangi bir web sitesi hala HTTPS'ye zorlanabilir, bu nedenle bu taraflar sizi her iki şekilde HTTPS'ye indirir


Bu yöntem sayfayı görüntülemek için dış kaynakları kullandığı için, İnternet iznini bildirmenize gerek yoktur. Web sayfasını görüntüleyen uygulamanın bunu yapması gerekir


1

// OnClick Dinleyici

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

// Util Yönteminiz

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

    }

"İsURL" nerede tanımlanır?
Cabuxa.Mapache

1

Url'nizi Tarayıcıda açmak için kısa biriyle gitmeniz yeterlidir:

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("YourUrlHere"));
startActivity(browserIntent);

1

Kotlin cevabı:

val browserIntent = Intent(Intent.ACTION_VIEW, uri)
ContextCompat.startActivity(context, browserIntent, null)

Bunu daha Urida kolaylaştırmak için bir uzantı ekledim

fun Uri?.openInBrowser(context: Context) {
    this ?: return // Do nothing if uri is null

    val browserIntent = Intent(Intent.ACTION_VIEW, this)
    ContextCompat.startActivity(context, browserIntent, null)
}

Bonus olarak, bir dizeyi Uri'ye güvenli bir şekilde dönüştürmek için basit bir uzantı işlevi.

fun String?.asUri(): Uri? {
    try {
        return Uri.parse(this)
    } catch (e: Exception) {}
    return null
}

1

Uzun zamandır bunu aradım, çünkü diğer tüm cevaplar bu bağlantı için varsayılan uygulamayı açıyordu, ancak varsayılan tarayıcı değil ve istediğim buydu.

Sonunda bunu başardım:

// gathering the default browser
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://"));
final ResolveInfo resolveInfo = context.getPackageManager()
    .resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
String defaultBrowserPackageName = resolveInfo.activityInfo.packageName;


final Intent intent2 = new Intent(Intent.ACTION_VIEW);
intent2.setData(Uri.parse(url));

if (!defaultBrowserPackageName.equals("android") {
    // android = no default browser is set 
    // (android < 6 or fresh browser install or simply no default set)
    // if it's the case (not in this block), it will just use normal way.
    intent2.setPackage(defaultBrowserPackageName);
}

context.startActivity(intent2);

BTW, bunu fark contextedebilirsiniz. Çünkü, bunu statik bir util yöntemi için kullandım, eğer bunu bir aktivitede yapıyorsanız, gerekli değildir.


0

URL'nizin doğru olup olmadığını kontrol edin. Benim için url'den önce istenmeyen bir alan vardı.


0

Bunu dene .. Benim için çalýţtý!

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

 <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"
        />

--------- VEYA ------------------

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

Çoğu uygulama için WebView eklemek zor bir yöntemdir. URL'yi tarayıcıda açmak daha kolaydır.
Zoe
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.