2012-11-22 15 views
5

मैं व्हाट्सएप, ट्विटर, फेसबुक और जीमेल जैसे सोशल नेटवर्क पर अपना कस्टम संदेश साझा करने के लिए इरादा और एक्शन.एसईएनडी का उपयोग करता हूं। जीमेल पर सबकुछ ठीक है और फेसबुक को छोड़कर अन्य एप्लीकेशन! मैं फेसबुक पर कुछ साझा करने के लिए अपने कोड को कैसे अनुकूलित कर सकता हूं? मैं बिना किसी समस्या के फेसबुक एसडीके का उपयोग कर फेसबुक पर साझा करता हूं, लेकिन मैं इसे एक इरादे से उपयोग करना चाहता हूं।फेसबुक एंड्रॉइड पर सामग्री साझा करना

Intent sendIntent = new Intent(); 
sendIntent.setAction(Intent.ACTION_SEND); 
sendIntent.putExtra(Intent.EXTRA_TEXT, knowTitle+"Read the full article via MomsApp by EnfaMama A+ at http://meadjohnsonasia.com.my/mobileapp"); 

sendIntent.putExtra(Intent.EXTRA_SUBJECT, "I just read "+knowTitle); 
sendIntent.setType("*/*"); 
startActivity(Intent.createChooser(sendIntent, "Share Your Favorite Article")); 

उत्तर

5

मैंने जो किया वह वास्तव में intenthandlers के चुने हुए लक्ष्य को रोकना था, आप अपने actionprovider का उपयोग कर ऐसा कर सकते हैं। आइए मान लें कि आपने एक आइटम बनाया है जिस पर ऑनक्लिक के इरादे से शुरू होता है। ऐसा करने के लिए, आप ऐसा करने के लिए एक एक्शनप्रोवाइडर को तत्काल कर सकते हैं। इस एक्शनप्रोवाइडर में किसी भी इरादे को रोकने के लिए setOnShareTargetSelectedListener हो सकता है जिसे आप अलग-अलग संभालना चाहते हैं (या बिल्कुल ^^ नहीं)। अपने actionprovider को कॉन्फ़िगर कैसे करें के लिए नीचे दिए गए कोड को देखें।

actionProvider.setShareIntent(createShareIntent()); 
    actionProvider.setOnShareTargetSelectedListener(new OnShareTargetSelectedListener(){ 

     @Override 
     public boolean onShareTargetSelected(ShareActionProvider source, 
       Intent intent) { 
      if ("com.facebook.katana".equals(intent.getComponent().getPackageName()) && mfacebooksharer != null) { 
       mfacebooksharer.shareStatus(subject, text); 
        return true; 
       } 
       return false; 
     } 

    }); 

जब भी फेसबुक से चुना जाता है, मैं अपने mfacebooksharer का उपयोग आशय संभालने के लिए और फेसबुक एपीआई का पालन करें। संभोग, कि actionrpovider एक इरादा होना चाहिए। (जैसे आप एक इरादे से काम करना चाहते थे)। मैं इरादा बनाने के लिए नीचे दी गई विधि का उपयोग करता हूं।

private Intent createShareIntent() { 
     intentsetter.setIntentleave(true); 
     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setType("text/plain"); 
     shareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 
     shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, text);   
     return shareIntent; 
    } 
+0

यह केवल एंड्रॉइड 4.0 में काम करता है – Giorgi

1

एंड्रॉयड में आशय का उपयोग करना, आप पाठ के बिना केवल एक लिंक साझा कर सकते हैं::

Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_TEXT, "http://www.google.ca"); 
startActivity(Intent.createChooser(intent, "Share with")); 

यह काम करेंगे

यह मैं क्या उपयोग है। आप पाठ और लिंक साझा करना चाहते हैं, तो आप Android के लिए फेसबुक एसडीके का उपयोग करना होगा: https://github.com/facebook/facebook-android-sdk

4

फेसबुक के प्लेटफार्म नीतियाँ अनुसार, आप नहीं Intent.EXTRA_TEXT का उपयोग कर शेयर संवाद पूर्व भर सकते हैं। आमतौर पर इसे एक बग माना जाता है, लेकिन here और here दायर एक बग रिपोर्ट के अनुसार, फेसबुक स्पष्ट रूप से उल्लेख करता है कि यह मामला नहीं है (यह एक बग नहीं है)।

आप अपने Platform Policies विशेष रूप से, प्लेटफार्म नीति IV.2

प्लेटफार्म नीति IV.2 से उद्धरण के बारे में अधिक पढ़ सकते हैं:

आप कोई भी फ़ील्ड लिए भर नहीं होना चाहिए निम्नलिखित उत्पादों से जुड़े, जब तक उपयोगकर्ता ने मैन्युअल रूप से वर्कफ़्लो में सामग्री उत्पन्न नहीं की: स्ट्रीम कहानियां ( फेसबुक.स्ट्रीम प्रकाशित करने के लिए उपयोगकर्ता_मेसेज पैरामीटर और FB.Connect.st reamPublish, और संदेश stream.publish के लिए पैरामीटर), फोटो (कैप्शन), वीडियो (विवरण), नोट्स (शीर्षक और सामग्री), लिंक (टिप्पणी), और जैबर/एक्सएमपीपी।

ये फ़ील्ड उपयोगकर्ताओं को स्वयं को व्यक्त करने के लिए लक्षित हैं। प्री-फिलिंग ये फ़ील्ड उपयोगकर्ता की आवाज की प्रामाणिकता को मिटा देती है।

एक ही तरीका है कि आप साझा कर सकते हैं कहानियों अपने App से फेसबुक एसडीके, जो अपनी पोस्ट के अनुसार, आप पहले से ही करने में सक्षम सफलतापूर्वक कर रहे हैं को एकीकृत कर रहा है। यह एकमात्र विकल्प उपलब्ध है (दुर्भाग्य से)।

+0

ठीक है, लेकिन मैं चाहता हूं कि उपयोगकर्ता फेसबुक एसडीके का उपयोग करके मेरे कस्टम फेसबुक साझाकरण को निर्देशित करे, मैं फेसबुक पर क्लिक किए गए उपयोगकर्ता का पता कैसे लगा सकता हूं, उदाहरण के लिए जीमेल नहीं !! तो अगर इसका फेसबुक मैं आसानी से कर सकता हूं जो मुझे चाहिए –

+0

@MahdiGiveie: क्या आप चाहते हैं कि उपयोगकर्ता आपके ऐप को उन एप्लिकेशन की सूची से चुनने के लिए चुन सकें जिनके साथ वे साझा कर सकते हैं? –

+0

मेरा ऐप नहीं !! मैं उपयोगकर्ता को एप्लिकेशन की सूची से फेसबुक पर क्लिक करता हूं, तो उपयोगकर्ता सीधे मेरे कस्टम फेसबुक साझाकरण के साथ साझा कर सकता हूं! मेरी समस्या यह है कि मैं उस उपयोगकर्ता को कैसे पता लगा सकता हूं कि फेसबुक पर सूची से क्लिक किया गया है? –

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