android - मैं अपने एप्लिकेशन से एंड्रॉइड के वेब ब्राउजर में यूआरएल कैसे खोल सकता हूं?




url android-intent (19)

मेरे आवेदन के बजाय अंतर्निहित वेब ब्राउज़र में कोड से यूआरएल कैसे खोलें?

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

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

सरल उत्तर

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

/**
 * 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 उदाहरण को दूसरे पैरामीटर पर पास कर सकते हैं, और दिए गए डेटा यूआरएल के आधार पर एक नया इरादा बनाया गया है।

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

if मुझे चेक स्टेटमेंट चाहिए if क्या मुझे चाहिए?

हाँ। दस्तावेज़ कहते हैं:

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

बोनस

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

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

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

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

या:

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

सबसे छोटा! :

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

खुश कोडिंग!


2.3 में, मेरे साथ बेहतर भाग्य था

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

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


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

आप इसे आजमा सकते हैं:

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

इस OmegaIntentBuilder

OmegaIntentBuilder.from(context)
                .web("Your url here")
                .createIntentHandler()
                .failToast("You don't have app for open urls")
                .startActivity();

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

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 पर किसी भी तरह से ले जाते हैं

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


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

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

एक संक्षिप्त कोड संस्करण ...

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


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

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

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

        }

एक्सएमएल कोड: -

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

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

पहला चरण कस्टम बिल्ड समर्थन लाइब्रेरी को आपके build.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


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

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

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

ठीक है, मैंने हर उत्तर की जांच की है, लेकिन कौन सा ऐप उसी यूआरएल के साथ डीप्लिंक कर रहा है जिसे उपयोगकर्ता उपयोग करना चाहते हैं?

आज मुझे यह मामला मिला और जवाब 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);

धन्यवाद!


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

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

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

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

}

वेबव्यू का उपयोग आपके एप्लिकेशंस में यूआरएल लोड करने के लिए किया जा सकता है। 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;
    }
}

android.webkit.URLUtil Api level 1 (एंड्रॉइड 1.0) के बाद से विधि guessUrl(String) पूरी तरह से ठीक काम कर रहा है (यहां तक ​​कि file:// या data:// )। इस रूप में उपयोग करें:

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 कोड देखें


मूल परिचय:

https: // उस कोड को "कोड" में उपयोग कर रहा है ताकि बीच में कोई भी उन्हें पढ़ सके। यह आपकी जानकारी हैकर्स से सुरक्षित रखता है।

http: // सिर्फ साझा करने के उद्देश्य का उपयोग कर रहा है, यह सुरक्षित नहीं है।

आपकी समस्या के बारे में:
एक्सएमएल डिजाइनिंग:

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

गतिविधि डिजाइनिंग:

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 अनुमतियां:

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

You face Problems when implementing this:    

1. अभिव्यक्ति अनुमतियाँ प्राप्त करना
2. यूआरएल के बीच अतिरिक्त जगह है
3. अपने यूआरएल की सही जांचें या नहीं


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

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

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




android-browser