2010-06-14 9 views
5

के साथ ऐप लॉन्च करें मैंने एंड्रॉइड में इरादे के बारे में पढ़ा है लेकिन यहां मेरा प्रश्न है। मैं अपने ब्राउज़र फोन पर एक लिंक के क्लिक के साथ अपने एंड्रॉइड फोन पर एक ऐप लॉन्च करना चाहता हूं। उदाहरण: यदि लिंक "mycam: // http://camcorder.com" है, तो "mycam: //" मेरे ऐप को लॉन्च करने के लिए किसी प्रकार का "टैग" के रूप में कार्य करता है लेकिन मैं उस ऐप पर स्ट्रिंग के रूप में "http://camcorder.com" पास करना चाहता हूं प्रारंभ।यूआरएल

कृपया मदद करें!

धन्यवाद!

उत्तर

5

, वहाँ ब्राउज़र एप्लिकेशन स्रोत कोड में एक विधि है:

public boolean shouldOverrideUrlLoading(WebView view, String url) { ... } 

के बाद एक यूआरएल क्लिक किया और यह अभी तक लोड करने के लिए शुरू नहीं किया गया:

  1. इरादे को यूआरएल धर्मान्तरित

    Intent intent; 
    
    // perform generic parsing of the URI to turn it into an Intent. 
    try { 
        intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME); 
    } catch (URISyntaxException ex) { 
        Log.w("Browser", "Bad URI " + url + ": " + ex.getMessage()); 
        return false; 
    } 
    
  2. यदि यह बाजार से शुरू नहीं होता है: // (या कुछ पूर्वनिर्धारित योजनाएं), प्रारंभ करें एक्टिविटी IfNeeded()

    intent.addCategory(Intent.CATEGORY_BROWSABLE); 
    intent.setComponent(null); 
    try { 
        if (startActivityIfNeeded(intent, -1)) { 
         return true; 
        } 
    } catch (ActivityNotFoundException ex) { 
        // ignore the error. If no application can handle the URL, 
        // eg about:blank, assume the browser can handle it. 
    } 
    

यह बहुत उपयोगी जानकारी है! मैं इस स्थिति को फिर से खेलने के लिए एक सरल कोड में:

Intent intent = Intent.parseUri("mycam://http://camcorder.com", Intent.URI_INTENT_SCHEME); 
intent.addCategory(Intent.CATEGORY_BROWSABLE); 
intent.setComponent(null); 
System.out.println(intent); 

परिणाम सुराग प्रदान करेगा मुझे उत्सुकता से फिल्टर के साथ एक गतिविधि लिखने के लिए:

 <activity android:name=".MyCamActivity" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.BROWSABLE" /> 
       <data android:scheme="mycam" /> 
      </intent-filter> 
     </activity> 

पी एस। android.intent.category.DEFAUL को न भूलें।

अंत में, अपने गतिविधि mycam से आह्वान कर सकते हैं: // योजना

+0

तो मुझे बस इतना करना है कि मेरा इरादा-फ़िल्टर बनाएं? बीटीडब्ल्यू, यहां वास्तविक लिंक है जिसके साथ मैं परीक्षण करूँगा: http://gunitec.com.do/carlos-portes.html "कैम 1" वास्तविक लिंक है जिसके साथ मैं परीक्षण करूँगा। मैंने इरादे-फ़िल्टर की कोशिश की है और कुछ भी नहीं मिला है। –

+0

मैं इसे अच्छी तरह से परीक्षण करता हूं। क्या आप AndroidManifest.xml प्रदान कर सकते हैं? – qrtt1

+0

ठीक है, मैं इसे आपको कैसे भेज सकता हूं? देर से प्रतिक्रिया के लिए खेद है, मुझे सूचित नहीं किया गया था कि आपने वापस लिखा था। –

4

mycam: // http://camcorder.com एक वैध यूआरआई नहीं है, और योजनाओं को बनाने तरह का डरावना है अगर दो क्षुधा ही एक चुनना। किसी विशेष यूआरआई के लिए हैंडलर के रूप में अपनी गतिविधि को पंजीकृत करना बेहतर होगा (उदाहरण के लिए http : //www.example.com/camcorder, पाठ्यक्रम के अपने डोमेन को प्रतिस्थापित करना)। आप <data> tag in your <intent-filter> tag in the AndroidManifest.xml के साथ ऐसा करते हैं। जब उपयोगकर्ता लिंक पर क्लिक करता है, तो उन्हें आपके आवेदन पर ले जाया जाएगा। इस तरह, आप वेब पर एक वास्तविक पृष्ठ भी डाल सकते हैं, जिससे लोगों को अपना ऐप इंस्टॉल करने या निर्देश देने का निर्देश दिया जा सकता है।

+0

जिस एप्लिकेशन पर मैं काम कर रहा हूं वह वेबसाइट पर विशिष्ट आंतरिक लिंक के लिए बनाया गया है, न कि सभी लिंक के लिए। आप क्यों कहते हैं कि यह वैध यूआरआई नहीं है? –