2013-06-04 6 views

उत्तर

41

इस सूची आप AndroidManifest.xml फ़ाइल को संशोधित करने और अपनी गतिविधि के अंतर्गत निम्नलिखित लाइनों जोड़ने के लिए में प्रदर्शित करने के लिए:

<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="text/plain" /> 
</intent-filter> 

यह आपके ऐप सूची में प्रकट कर देगा। अब मुझे लगता है कि आप शायद यह जानना चाहें कि इसे अपने कोड में कैसे संभालना है। जब कोई अन्य एप्लिकेशन आपके साथ कुछ पाठ साझा करने जा रहा है, तो यह आपके एप्लिकेशन को एंड्रॉइड "इरादा" के साथ शुरू करने जा रहा है। इरादों का उपयोग करने में सक्षम होने के लिए, आपको एक फोनगैप प्लगइन की आवश्यकता है। मुझे लगता है कि वेबइन्टेंट आपको अनुकूल कर सकता है।

// deviceready is PhoneGap's init event 
document.addEventListener('deviceready', function() { 
    window.plugins.webintent.getExtra(WebIntent.EXTRA\_TEXT, function (url) { 
    // url is the value of EXTRA_TEXT 
    }, function() { 
    // There was no extra supplied. 
    }); 
}); 

अधिक यहाँ WebIntent पर जानकारी: इस कोड को होगा http://smus.com/android-phonegap-plugins/

नोट: मुझे नहीं लगता कि आप हालांकि बिल्ड PhoneGap के साथ ऐसा करने में सक्षम हो जाएगा ... आप केवल उपयोग कर सकते हैं समर्थित प्लगइन्स, और AndroidManifest.xml फ़ाइल को इतना नहीं बदल सकता है। आपको शायद कॉर्डोवा मार्ग जाना होगा और अपनी मशीन पर सब कुछ बनाना होगा।


संपादित करें: वहाँ कुछ लोगों को कैसे iOS पर यह करने के लिए पूछ रहे हैं। अपने Info.plist में प्रासंगिक जानकारी शामिल करके

  1. एसोसिएट सही फ़ाइल प्रकार संघों के साथ अपने अनुप्रयोग: ऐसा करने के दो चरण हैं। यह SO उत्तर बताता है कि यह कैसे करें: How do I associate file types with an iPhone application?। इससे आपकी ऐप सूची में दिखाई देगी लेकिन आपके ऐप को अभी तक डेटा प्राप्त नहीं होगा।
  2. आपका आवेदन अब नए पैरामीटर के साथ लॉन्च किया जाएगा। अब आपको इन पैरामीटर को पढ़ने में सक्षम होना चाहिए। iPhone एप्लिकेशन और साझा का उपयोग कर, जहां एप्लिकेशन की इस सूची तो से आता है - How to pass arguments to app built on Phonegap
+0

ऐसा प्रतीत होता है कि यह उत्तर वृद्ध वेबइन्टेंट प्लगइन वेबसाइट से कॉपी किया गया था ... क्या इसके लिए और कुछ है? मुझे WebTntent के माध्यम से डिवाइस पहले से या फिर से शुरू करने के लिए EXTRA_TEXT या URI प्राप्त नहीं हो रहा है। – ericpeters0n

+0

@ ericpeters0n क्या आप वाकई प्लगइन सही तरीके से स्थापित हैं? मैंने फ़ोनगैप के साथ यहां क्या नहीं पूछा है, लेकिन अन्य तकनीकों के साथ, और यह सुनिश्चित करने के लिए कि अगर इरादा फ़िल्टर आपकी गतिविधि के बच्चे के रूप में ऊपर लिखा गया है, तो आप गतिविधि सूची में दिखाई देंगे और इरादा प्राप्त करेंगे। यदि आपको वेबइन्टेंट के साथ यह नहीं मिलता है जिसका अर्थ है कि या तो वेबइन्टेंट सही ढंग से स्थापित/चल रहा नहीं है, तो वेबइन्टेंट अब एंड्रॉइड (किटकैट?) के हाल के संस्करणों के साथ काम नहीं करता है, लेकिन मुझे बाद के बारे में कुछ संदेह है ... सिद्धांत इरादों में थोड़ी देर के लिए नहीं बदला है ... –

+0

यह आईफोन पर कैसे काम करेगा? उपर्युक्त उदाहरण केवल एंड्रॉइड के लिए है, और मुझे यह जानने में दिलचस्पी है कि ऐप के माध्यम से साझा करने के लिए आईफोन पर एक ऐप को कैसे पंजीकृत किया जा सकता है। –

1

@ ericpeters0n: इस सवाल की जाँच करें/इतने पर जवाब देने के लिए, यह वास्तव में क्या है? उदाहरण के लिए, जब मैं फोटो गैलरी में हूं और मैं साझा करता हूं, तो सूची में संदेश, मेल, ट्विटर, फेसबुक, फ़्लिकर शामिल हैं। इस सूची में इन ऐप्स को स्वयं प्रदर्शित करने के लिए कैसे पंजीकृत किया गया?

+0

आईओएस के संस्करण पहले 8 को इस कार्यक्षमता को उनके अंदर कड़ी मेहनत करनी थी। इसके विपरीत, एंड्रॉइड ऐप्स केवल साझा करने के इरादे को प्राप्त करने के लिए पंजीकरण करते हैं और स्वचालित रूप से सूची में जोड़े जाते हैं (अधिक स्मार्ट डिज़ाइन IMHO :-) – Eno

4

मैं साझा करने के लिए फ़ाइल का यूआरएल प्राप्त करने में कामयाब रहा; EXTRA_STREAM का उपयोग करके EXTRA_TEXT के अंदर से पहले, webintent.java को संशोधित करना और AndroidMenifest.xml में एक इरादा फ़िल्टर जोड़ना।

यह कैसे मेरे मुख्य गतिविधि दिखाई देता है:

<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.Black.NoTitleBar" android:windowSoftInputMode="adjustResize"> 
     <intent-filter android:label="@string/launcher_name"> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter android:label="@string/app_name"> 
      <data android:mimeType="*/*" /> 
      <action android:name="android.intent.action.SEND" />     
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </activity> 

मैंने पाया कि प्लगइन EXTRA_STREAM भाग के लिए एक बग था, इसलिए मैं अपने javafile इस के अनुसार संशोधित किया: इसके अलावा

https://github.com/Initsogar/cordova-webintent/issues/23

मेरी जेएस फ़ाइल के अंदर, मुझे इस तरह के फ़ंक्शन को कॉल करना होगा: (EXTRA_TEXT के बजाय EXTRA_STREAM का उपयोग)

window.plugins.webintent.getExtra(window.plugins.webintent.EXTRA_STREAM, function (url) { 
     // url is the value of EXTRA_STREAM 
     alert(url); 
     }, function() { 
     // There was no extra supplied. 
     alert("no url"); 
     }); 

और मुझे फ़ाइल का यूआरआई मिलता है।

+0

यदि आपके पास कोई नया प्रश्न है, तो कृपया [पूछे प्रश्न] पर क्लिक करके पूछें (http: // stackoverflow.com/questions/ask) बटन। इस प्रश्न का एक लिंक शामिल करें यदि यह संदर्भ प्रदान करने में मदद करता है। – ryanyuyu

+0

मैंने सोचा कि मैंने टाइप किया है और जवाब दिया है .. हालांकि मुझे खेद है कि अगर यह उत्तर की तरह दिखने में बहुत भ्रमित था (इसे संपादित करने के लिए इसे आसान बनाने की कोशिश की गई) – Moinkhan

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