2010-07-25 27 views
9

नहीं मिल सकता है मैं विशेष रूप से दिए गए यूआरएल के लिए डिफ़ॉल्ट एंड्रॉइड ब्राउज़र चलाने के लिए चाहता हूं।कस्टम क्लास के साथ ब्राउज़र आशय लॉन्च करें - गतिविधि

Intent i = new Intent(); 
i.setAction("android.intent.action.VIEW"); 
i.addCategory("android.intent.category.BROWSABLE"); 
i.setClassName("com.google.android.browser", "com.android.browser.BrowserActivity"); 
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
i.setData(Uri.parse(url)); 
startActivity(i); 

त्रुटि मैं प्राप्त है:

Unable to find explicit activity class { 
com.google.android.browser/com.android.browser.BrowserActivity}; 
have you declared this activity in your AndroidManifest.xml? 

मैं भी पैकेज से उद्देश्य को छानने की कोशिश की: मैं इस कोड का उपयोग कर रहा

i.setPackage("com.google.android.browser"); 
setClassName के बजाय

, लेकिन करने के लिए कोई फायदा नहीं:

No Activity found to handle Intent { act=android.intent.action.VIEW 
cat=[android.intent.category.BROWSABLE] 
dat=http://www.google.com/ flg=0x10000000 pkg=android } 

मैंने मैनिफेस्ट में <uses-library android:name="com.google.android.browser" /> जोड़ने का भी प्रयास किया।

क्या मुझे यहां कुछ याद आ रही है?

पीएस: मुझे startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"))) का उपयोग करने में कोई दिलचस्पी नहीं है क्योंकि यह ब्राउज़िंग Intent ब्राउज़िंग के लिए सभी विकल्पों की सूची देगा।

उत्तर

6

मैं इस का उपयोग करें, यह ठीक है।

intent.setComponent(new ComponentName("com.android.browser", "com.android.browser.BrowserActivity")); 

मुझे लगता है कि आपको पता है कि क्या गलत है। :)

6

कृपया ध्यान दें डिफ़ॉल्ट ब्राउज़र को पर ओवरराइड किया जा सकता है और यह हमेशा ब्राउज़र ऐप में निर्मित नहीं होता है, उदाहरण के लिए यह ओपेरा मिनी हो सकता है।

आप इस तरह से करने की जरूरत है: कोड में से एक ब्राउज़र में एक यूआरएल को खोलने के लिए

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri data = Uri.parse("http://www.google.com"); 
intent.setData(data); 
startActivity(intent); 
+4

जैसा कि मैंने अपने प्रश्न में कहा है, मैं * डिफ़ॉल्ट एंड्रॉइड ब्राउज़र * चलाने में सक्षम होना चाहता हूं, न कि * डिफ़ॉल्ट चयनित * ब्राउज़र। एक साइड नोड के रूप में, मैंने पहले आपके द्वारा उल्लेखित समाधान के साथ प्रयास किया है, लेकिन इसका कोई फायदा नहीं हुआ क्योंकि यह स्पष्ट रूप से ब्राउज़र को लॉन्च करता है जो डिफ़ॉल्ट रूप से सेट होता है (या एप्लिकेशन चयनकर्ता लॉन्च करता है)। –

+0

गैर-गतिविधि वर्ग में इस इरादे का उपयोग कैसे करें ?? – Maxwell

+0

इसके लिए कमी - स्थानीय एचटीएमएल फाइलों के लिए यह ब्राउज़र के बजाय HTMLViewer ऐप लॉन्च करता है। – JustAMartin

1

एक तरह से वेब दृश्य का उपयोग करने के लिए है। तब वेब दृश्य बनाने

public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    view.loadUrl(url); 
    return true; 
} 

:

एक WebViewClientClass ऐसा WebViewClient फैली बनाएँ। Set webview.setWebViewClient(new WebViewClientClass()); --- यह एक छोटा सा कामकाज है ताकि डिफ़ॉल्ट वेब ब्राउज़र खत्म न हो।

फिर एक edittext में यूआरएल लेने के लिए और के रूप में ब्राउज़र को लोड करने के लिए सेट:

webview.loadurl(urlfield.getText().toString()); 
webview.requestFocus(); 

URL है जिसे आपको अनुरोध किया के साथ वेब ब्राउज़र को लोड करना चाहिए।

आशा इस मदद करता है ... :)

+0

यदि आप अपना डिफ़ॉल्ट वेब ब्राउज़र अपना अनुरोध लेना चाहते हैं तो webview.setWebViewClient सेट न करें ... – Flash

+1

मैं ब्राउज़र विंडो लॉन्च नहीं करना चाहता (या उस मामले के लिए * अपना * ब्राउज़र उपयोग करें)। मैं * डिफ़ॉल्ट ब्राउज़र लॉन्च करना चाहता हूं जो एंड्रॉइड * के साथ आता है।साथ ही, ब्राउज़र विंडो लॉन्च करने से कैश, बुकमार्क्स, बैक बटन इत्यादि जैसे प्रबंधन की अतिरिक्त जटिलता लागू होगी। बीटीडब्ल्यू, कृपया अपना कोड प्रारूपित करें;) –

संबंधित मुद्दे