मैं अपने एप्लिकेशन से Android के वेब ब्राउज़र में URL कैसे खोल सकता हूं?


1344

मेरे ऐप्लिकेशन के बजाय अंतर्निहित वेब ब्राउज़र में कोड से URL कैसे खोलें?

मैंने यह कोशिश की:

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

लेकिन मुझे एक अपवाद मिला:

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

6
मुझे लगता है कि यह इस वजह से है: android-developers.blogspot.com/2009/12/…
Arutha

1
यह कुछ उपकरणों में काम क्यों नहीं कर रहा है? यहां तक ​​कि अगर कोई वेब ब्राउज़र है, तो यह ActivNotFoundException पर जाता है।

मैं @Manu के रूप में एक ही मुद्दा देख रहा हूँ। एक नेक्सस 6 पर बेसिक इंस्टॉल में क्रोम है, लेकिन एक अपवाद के कारण लिंक।
ब्रिल पप्पिन

जवाबों:


2453

इसे इस्तेमाल करे:

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

मेरे लिए यह ठीक काम करता है।

लापता "http: //" के रूप में मैं बस कुछ इस तरह से करूँगा:

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

मैं शायद आपके EditText को पहले से बता दूंगा कि उपयोगकर्ता "http: //" के साथ एक URL टाइप कर रहा है।


2
सिवाय इसके कि आपके कोड और mbaird वही नहीं हैं, जो मैं पोस्ट कर रहा हूं उसके लिए बता सकता हूं। सुनिश्चित करें कि आपके URL में http://स्कीम है - दिखाए गए अपवाद से पता चलता है कि आपके URL में स्कीम की कमी है।
कॉमंसवेयर

5
हाँ ! यह http: // से चूक गया! URL उपयोगकर्ता द्वारा दर्ज किया गया है, क्या स्वचालित रूप से प्रारूपित करने का कोई तरीका है?
अरुथ

4
URLUtil
डान

90
if (!url.startsWith("http://") && !url.startsWith("https://"))एक सामान्य त्रुटि है जो आपको फ़ाइल जैसे यूआरएल में ले जा सकती है : // और कुछ अच्छे usecases को तोड़ें। यूआरआई वर्ग के साथ यूरी को पार्स करने की कोशिश करें और जांचें कि क्या स्कीमा है। यदि नहीं, तो "http: //";) जोड़ें
tuxSlayer

22
आप के साथ अशक्त जाँच की आवश्यकता है resolveCheckऑफ़िसिकल डॉक्स देखें : सावधानी: यदि डिवाइस पर कोई ऐप नहीं हैं जो कि अंतर्निहित इरादे को प्राप्त कर सकते हैं, तो जब यह स्टार्टअक्टिविटी () कहता है, तो आपका ऐप क्रैश हो जाएगा। पहले यह सत्यापित करने के लिए कि आपकी मंशा पर उद्देश्य को प्राप्त करने के लिए एक ऐप मौजूद है, समाधान () को कॉल करें।
kenju

90

इसे प्राप्त करने का एक सामान्य तरीका अगले कोड के साथ है:

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

इसे एक लघु कोड संस्करण में बदला जा सकता है ...

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

या:

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

सबसे छोटा! :

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

खुश कोडिंग!


57

सरल उत्तर

आप Android डेवलपर से आधिकारिक नमूना देख सकते हैं ।

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

यह काम किस प्रकार करता है

के निर्माता पर एक नजर है Intent:

public Intent (String action, Uri uri)

आप android.net.Uriउदाहरण को 2 पैरामीटर में पास कर सकते हैं , और दिए गए डेटा url के आधार पर एक नया आशय बनाया जाता है।

और फिर, बस startActivity(Intent intent)एक नई गतिविधि शुरू करने के लिए कॉल करें , जो दिए गए URL के साथ इरादे के साथ बंडल है।

क्या मुझे ifचेक स्टेटमेंट की आवश्यकता है ?

हाँ। डॉक्स का कहना है:

यदि डिवाइस पर कोई ऐप नहीं है जो अंतर्निहित इरादे को प्राप्त कर सकता है, तो आपके ऐप को क्रैश हो जाएगा जब यह startActivity () कहता है। पहले यह सत्यापित करने के लिए कि आपकी मंशा पर उद्देश्य को प्राप्त करने के लिए एक ऐप मौजूद है, समाधान () को कॉल करें। यदि परिणाम गैर-अशक्त है, तो कम से कम एक ऐप है जो इरादे को संभाल सकता है और स्टार्टअक्टिविटी () को कॉल करना सुरक्षित है। यदि परिणाम शून्य है, तो आपको इरादे का उपयोग नहीं करना चाहिए और यदि संभव हो, तो आपको उस विशेषता को अक्षम करना चाहिए जो इरादे को आमंत्रित करता है।

बक्शीश

नीचे दिए गए उद्देश्य उदाहरण बनाते समय आप एक पंक्ति में लिख सकते हैं:

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

3
यह माना जाता है कि आपूर्ति की गई यूआरएल में http है।
इगोरगानापोलस्की

56

2.3 में, मेरे पास बेहतर किस्मत थी

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

Intent.ACTION_VIEWस्ट्रिंग के बजाय उपयोग का अंतर"android.intent.action.VIEW"


1
वाह क्या अलग है?
user1324936 21

1
इस जवाब ने मुझे बहुत मदद की। मुझे नहीं पता कि क्या अंतर था, लेकिन हमारे पास 2.3 के साथ एक मुद्दा था कि यह हल हो गया। क्या किसी को पता है कि कार्यान्वयन में क्या अंतर है?
इनोवा

2
Android डेवलपर के अनुसार: यह उत्तर - "किसी दिए गए कार्य के साथ एक इरादा बनाएँ। अन्य सभी क्षेत्र (डेटा, प्रकार, वर्ग) शून्य हैं।" और स्वीकृत उत्तर - "किसी दिए गए कार्य के साथ एक इरादा और दिए गए डेटा url के लिए।"
टेको इनक

30

इसे इस्तेमाल करे:

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

या यदि आप चाहते हैं कि वेब ब्राउजर आपकी गतिविधि में खुले तो ऐसा करें:

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

और यदि आप अपने ब्राउज़र में ज़ूम कंट्रोल का उपयोग करना चाहते हैं तो आप उपयोग कर सकते हैं:

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

4
ध्यान दें कि प्लगइन्स और ऐसे WebView में अक्षम हैं, और यह कि इंटरनेट की अनुमति की आवश्यकता होगी। ( संदर्भ )

22

यदि आप उपयोगकर्ता को सभी ब्राउज़र सूची के साथ एक संवाद दिखाना चाहते हैं, तो वह पसंदीदा चुन सकता है, यहाँ नमूना कोड है:

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
अगर ऐसे कई ऐप हैं जो इरादे को संभाल सकते हैं, तो सिस्टम स्वतः ही एक चयनकर्ता प्रदान करेगा, है ना?
जेफरी ब्लाटमैन

@ xmen-wk क्योंकि url के साथ ईथर शुरू कर सकते हैं , httpया httpsजावा में स्थिरांक के रूप में 'मैजिक स्ट्रिंग्स' की घोषणा करना एक अच्छा अभ्यास है।
Dmytro Danylyk

thx, के बारे में नहीं जानता था context.startActivity। बाहरी कक्षा से बुलाते समय बहुत उपयोगी है
वूफरफेलदेव

18

जैसे समाधान अन्य ने लिखा है (वह काम ठीक है), मैं एक ही बात का जवाब देना चाहूंगा, लेकिन एक टिप के साथ जो मुझे लगता है कि ज्यादातर उपयोग करना पसंद करेंगे।

यदि आप चाहते हैं कि जिस ऐप को आप एक नए कार्य में खोलना शुरू करते हैं, तो आप खुद को उसी के ढेर पर रहने के बजाय, इस कोड का उपयोग कर सकते हैं:

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 खोलने का एक तरीका भी है । कोटलिन में उदाहरण:

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

यदि वेब ब्राउज़र में समस्या है, तो नए एप्लिकेशन को बग्स और क्रैश से स्रोत ऐप की सुरक्षा करेगा?
मूल Android

@ TheOriginalAndroid मुझे समझ में नहीं आता कि इसका क्रैश और वेब ब्राउज़र के साथ क्या संबंध है। कृपया समझाएं कि आप क्या करने की कोशिश कर रहे हैं।
Android डेवलपर

आपके प्रतिक्रिया के लिए धन्येवाद। आपकी पोस्ट दिलचस्प है। विशेष रूप से एक वेब लॉन्च के लिए एक नया कार्य खोलने का क्या लाभ है?
मूल एंड्रॉइड

2
@TheOriginalAndroid बस इतना है कि उपयोगकर्ता आपके ऐप पर वापस स्विच करने में सक्षम होगा, और फिर वेब ब्राउज़र पर फिर से वापस आएगा। यदि आप हालिया-कार्य स्क्रीन खोलते हैं, तो आपको एक के बजाय 2 कार्य दिखाई देंगे। इसके अलावा, एकल कार्य (जो आपके ऐप के कार्य से संबंधित है) में एक वेब ब्राउज़र थंबनेल देखने के बजाय, आपको 2: आपके ऐप में से एक और वेब ब्राउज़र का एक और दिखाई देगा। मुझे लगता है कि यह इस तरह से कम भ्रमित है।
एंड्रॉयड डेवलपर

FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESETपदावनत किया जाता है
प्रतीक बुटानी

17

अन्य विकल्प वेब अनुप्रयोग का उपयोग कर एक ही आवेदन में लोड यूआरएल में

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

ध्यान दें कि प्लगइन्स और ऐसे WebView में अक्षम हैं, और यह कि इंटरनेट की अनुमति की आवश्यकता होगी। ( संदर्भ )

12

आप भी इस तरह से जा सकते हैं

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

जावा कोड में:

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

 }

}

मैनिफेस्ट में इंटरनेट की अनुमति को न भूलें ...


यह दिलचस्प और अलग है। मुझे लगता है कि इस तरह से उपयोगकर्ता मेरे ऐप में एक वेब ब्राउज़र देखता है। क्या वह सही है? मैं उत्थान करता हूं।
मूल Android

9

आपके एप्लिकेशन में Url लोड करने के लिए वेबव्यू का उपयोग किया जा सकता है। URL को टेक्स्ट व्यू में उपयोगकर्ता से प्रदान किया जा सकता है या आप इसे हार्डकोड कर सकते हैं।

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

1
इसने मेरा वीडियो जारी किया: github.com/CrandellWS/VideoEnabledWebView/blob/master/app/src/…
CrandellWS

6

एक छोटा कोड संस्करण ...

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


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

6

अपने प्रयास ब्लॉक के भीतर, निम्न कोड पेस्ट करें, एंड्रॉइड इंटेंट आपके लिंक के स्थान की पहचान करने के लिए सीधे यूआरआई (यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर) ब्रेसिज़ के लिंक का उपयोग करता है।

आप यह कोशिश कर सकते हैं:

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

5

सरल और सर्वश्रेष्ठ अभ्यास

विधि 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*/
            }

विधि 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*/
    }

ए के context!!.packageManagerबजाय का उपयोग करें । getPackageManager()Fragment
कूलमैन्ड


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

स्वागत है, नौसिखिया। कृपया उत्तर को और अधिक पूर्ण बनाएं, ऐसे चर घोषित करें जो मूल कोड में मौजूद नहीं हैं।
गिल

3

मार्कबी की प्रतिक्रिया सही है। मेरे मामले में मैं Xamarin का उपयोग कर रहा हूं, और C # और Xamarin का उपयोग करने वाला कोड है:

var uri = Android.Net.Uri.Parse ("http://www.xamarin.com");
var intent = new Intent (Intent.ActionView, uri);
StartActivity (intent);

यह जानकारी यहां से ली गई है: https://developer.xamarin.com/recipes/android/fundamentals/intent/open_a_webpage_in_the_browser_application/


3

क्रोम कस्टम टैब अब उपलब्ध हैं:

पहला कदम अपनी बिल्ड.gradle फ़ाइल में कस्टम टैब समर्थन लाइब्रेरी जोड़ रहा है:

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

और फिर, क्रोम कस्टम टैब खोलने के लिए:

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

अधिक जानकारी के लिए: https://developer.chrome.com/multidevice/android/customtabs


2

मार्क बी के जवाब और टिप्पणियों के आधार पर:

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.URLUtilविधि guessUrl(String)पूरी तरह से ठीक काम कर रहा है (यहां तक ​​कि file://या साथ data://) Api level 1(Android 1.0)। इस रूप में उपयोग करें:

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

गतिविधि कॉल में:

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

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

अधिक जानकारी guessUrlके लिए पूर्ण कोड की जाँच करें ।


2

ठीक है, मैंने हर उत्तर की जाँच की लेकिन किस ऐप का उपयोग उसी URL से किया जा रहा है जिसे उपयोगकर्ता उपयोग करना चाहता है?

आज मुझे यह मामला मिल गया और जवाब है browserIntent.setPackage("browser_package_name");

जैसे:

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

धन्यवाद!


अच्छा उत्तर। यह बताता है कि एक विशिष्ट ब्राउज़र (सीधे) पर एक इंटेंट URL कैसे खोला जाए, और ब्राउज़र को चुनने वाले सिस्टम पर भरोसा न करें।
श्री-आईडीई

2

इरादे के माध्यम से सरल, वेबसाइट देखें,

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

एंड्रॉइड ऐप में अपनी वेबसाइट को देखने के लिए इस सरल कोड का उपयोग करें।

मेनिफ़ेस्ट फ़ाइल में इंटरनेट अनुमति जोड़ें,

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

अमान्य URL के कारण यह त्रुटि हुई, Android OS आपके डेटा के लिए कार्रवाई दृश्य नहीं ढूँढ सकता है। तो आपने यह सत्यापित किया है कि URL मान्य है या नहीं।


1

मुझे लगता है कि यह सबसे अच्छा है

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

नीचे दिए गए कोड को वैश्विक वर्ग में रखें

    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

यह तरीका एक विधि का उपयोग करता है, जिससे आपको निश्चित इनपुट होने के बजाय किसी भी स्ट्रिंग को इनपुट करने की अनुमति मिलती है। यदि बार-बार विधि का उपयोग करने के लिए तीन पंक्तियों की आवश्यकता होती है तो यह कोड की कुछ पंक्तियों को सहेजता है।

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

इस पद्धति का उपयोग करना इसे सार्वभौमिक रूप से प्रयोग करने योग्य बनाता है। आईटी को किसी विशिष्ट गतिविधि में नहीं रखा जाना चाहिए, क्योंकि आप इसे इस तरह से उपयोग कर सकते हैं:

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

या यदि आप इसे किसी गतिविधि के बाहर शुरू करना चाहते हैं, तो आप बस गतिविधि पर आवृत्ति शुरू करते हैं:

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

जैसा कि इन दोनों कोड ब्लॉकों में देखा गया है, एक अशक्त-जांच है। यह ऐसा ही है क्योंकि यह नीट रिटर्न करता है यदि इरादे को संभालने के लिए कोई ऐप नहीं है।

यदि कोई प्रोटोकॉल परिभाषित नहीं है, तो यह तरीका HTTP पर डिफॉल्ट करता है, क्योंकि ऐसी वेबसाइटें हैं जिनके पास SSL प्रमाणपत्र नहीं है (आपको HTTPS कनेक्शन के लिए क्या चाहिए) और यदि आप HTTPS का उपयोग करने का प्रयास करते हैं तो वे काम करना बंद कर देंगे और यह नहीं है । कोई भी वेबसाइट अभी भी HTTPS के लिए मजबूर कर सकती है, इसलिए वे साइड्स आपको किसी भी तरह HTTPS में लैंड कर सकते हैं


क्योंकि यह विधि पृष्ठ को प्रदर्शित करने के लिए बाहर के संसाधनों का उपयोग करती है, इसलिए आपको इनरनेट अनुमति की घोषणा करने की कोई आवश्यकता नहीं है। ऐप जो वेबपेज प्रदर्शित करता है, उसे करना होगा


1

// OnClick श्रोता

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

// आपकी यूटिलिटी विधि

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

    }

"ईयूआरएल" को कहां परिभाषित किया गया है?
कैबक्सा.मापाचे

1

ब्राउज़र में अपने यूआरएल को खोलने के लिए बस एक बार जाएं:

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

1

कोटलिन उत्तर:

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

मैंने Uriइसे और भी आसान बनाने के लिए इसमें एक एक्सटेंशन जोड़ा है

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

एक बोनस के रूप में, एक स्ट्रिंग को उरी में सुरक्षित रूप से परिवर्तित करने के लिए एक सरल एक्सटेंशन फ़ंक्शन है।

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

1

इसलिए मैंने लंबे समय तक इसकी तलाश की क्योंकि अन्य सभी उत्तर उस लिंक के लिए डिफ़ॉल्ट ऐप खोल रहे थे, लेकिन डिफ़ॉल्ट ब्राउज़र नहीं और यही मैं चाहता था।

मैं आखिरकार ऐसा करने में कामयाब रहा:

// 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, आप नोटिस कर सकते हैं। contextजो भी हो, क्योंकि मैंने इसे एक स्थिर उपयोग विधि के लिए उपयोग किया है, यदि आप किसी गतिविधि में ऐसा कर रहे हैं, तो इसकी आवश्यकता नहीं है।



0

यह कोशिश करो। मेरे लिए काम किया!

    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 कोड: -

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

--------- या ------------------

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

अधिकांश ऐप्स के लिए, WebView जोड़ना ऐसा करने का एक कठिन तरीका है। यह ब्राउज़र में URL खोलना आसान है।
झो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.