यह तरीका एक विधि का उपयोग करता है, जिससे आपको निश्चित इनपुट होने के बजाय किसी भी स्ट्रिंग को इनपुट करने की अनुमति मिलती है। यदि बार-बार विधि का उपयोग करने के लिए तीन पंक्तियों की आवश्यकता होती है तो यह कोड की कुछ पंक्तियों को सहेजता है।
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 में लैंड कर सकते हैं
क्योंकि यह विधि पृष्ठ को प्रदर्शित करने के लिए बाहर के संसाधनों का उपयोग करती है, इसलिए आपको इनरनेट अनुमति की घोषणा करने की कोई आवश्यकता नहीं है। ऐप जो वेबपेज प्रदर्शित करता है, उसे करना होगा