ACTION_SEND के माध्यम से Android ऐप से फेसबुक पर टेक्स्ट साझा करें


91

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

http://m.facebook.com/sharer.php?u=mytext

यह मेरा पाठ और सबमिट बटन दिखाता है। लेकिन जब मैं सबमिट बटन दबाता हूं तो कुछ नहीं होता है। पेज फिर से लोड होता है। मुझे लगता है कि शायद फेसबुक ऐप के जरिए ही यूआरएल भेजना संभव है। क्या ऐसा हो सकता है?

क्या किसी ACTION_SENDने फेसबुक एंड्रॉइड ऐप के माध्यम से पाठ भेजने का प्रबंधन किया ?


4
यदि आप इस SO पोस्ट पर जाते हैं और निराश होते हैं कि facebook ऐप ठीक से ACTION_SEND का समर्थन नहीं करता है, तो कृपया अपने पोस्ट को निम्नलिखित विषय में जोड़ने का समय निकालें
त्रुटि

7
मैं 21-3-2012 अनुमान लगा रहा हूं अभी भी हल नहीं हुआ है? क्योंकि मैं इसे काम करने के लिए नहीं कर सकता ..
डिएगो

1
Developers.facebook.com/bugs/332619626816423 - लगता है कि फ़ेसबुक डिज़ाइन टीम ने इसे बंद कर दिया है क्योंकि एक संदेश को भरना उनकी नीति के विरुद्ध है :(
ब्रेट

1
@ ग्रेट जो हास्यास्पद है। वे बस आपको अपनी परियोजना में अपने एसडीके को जोड़ना चाहते हैं।
theblang

2
17 मई, 2015 - अभी भी फेसबुक के साथ काम नहीं कर रहा है।
फैसल आसिफ

जवाबों:


11

संपादित करें: Android के लिए आधिकारिक फेसबुक ऐप की नई रिलीज़ के साथ (14 जुलाई 2011) यह काम करता है !!!

OLD: उपर्युक्त उदाहरण काम नहीं करते हैं यदि उपयोगकर्ता फेसबुक ऐप को साझा करने के लिए चुनता है, लेकिन उपयोगकर्ता फेसबुक पर पोस्ट करने के लिए सेसमिक ऐप चुनता है तो वे काम करते हैं। मुझे लगता है कि सीस्मिक फेसबुक की तुलना में फेसबुक एपीआई का बेहतर कार्यान्वयन है!


फेसबुक संस्करण में 1.6.1 इसके काम नहीं कर रहा है, और कुछ अतिरिक्त कीड़े भेजते समय लगता है!
बैठा

इसने काम करना शुरू कर दिया! पता नहीं क्या समस्या थी। धन्यवाद यह FB v 1.6.1 के साथ भी काम करता है।
बैठा

8
फेसबुक ऐप के संस्करण 1.6.2 के जारी होने के बाद से यह उत्तर गलत है: Developers.facebook.com/bugs/363863587019268
alaeri

51

फेसबुक ऐप के साथ शेयर का काम करने के लिए, आपको केवल कम से कम एक लिंक की आवश्यकता है:

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

यह सही साझाकरण विंडो दिखाएगा लेकिन जब आप शेयर पर क्लिक करते हैं, तो कुछ भी खुश नहीं होता है (मैंने आधिकारिक ट्विटर ऐप के साथ भी कोशिश की, यह काम नहीं करता है)।

फेसबुक ऐप शेयरिंग का काम करने का एकमात्र तरीका मुझे केवल एक लिंक है, जिसमें कोई टेक्स्ट नहीं है:

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

यह निम्न विंडो दिखाएगा और शेयर बटन काम करेगा:

फेसबुक साझा

जाहिरा तौर पर यह स्वचालित रूप से शेयर को आबाद करने के लिए लिंक से एक छवि और पाठ लेता है।

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


4
"अद्भुत खोज इंजन" पाठ कहाँ है? वही बग लोग ऊपर रिपोर्टिंग कर रहे हैं, फिर?
काइल क्लेग

3
वह कह रहा है कि आप केवल एक लिंक पोस्ट कर सकते हैं। कोई पाठ नहीं है। काम करने के लिए "अद्भुत खोज इंजन" पाठ को बाहर निकालना पड़ा।
चूबसॉन्डब्स जुब

यदि आप उत्तर को अपडेट करते हैं तो मैं +1 करूंगा। अब के रूप में Facebookएप्लिकेशन सही तरह से एक स्ट्रिंग से लिंक खींच लेंगे Wonderful search engine http://www.google.fr/। ध्यान दें कि मैंने कहा कि लिंक को खींचें , यह अभी भी पाठ के साथ कुछ भी नहीं करेगा। इसके अलावा, Twitterपाठ और लिंक दोनों के साथ काम करता है।
द ब्लांग

45

06/2013:

  • यह फेसबुक का एक बग है, न कि आपका कोड
  • फेसबुक इस बग को ठीक नहीं करेगा , वे कहते हैं कि यह "डिजाइन द्वारा" है कि उन्होंने एंड्रॉइड शेयर सिस्टम को तोड़ दिया: https://developers.facebook.com/bugs/332619626816423
  • एसडीके का उपयोग करें या केवल URL साझा करें।
  • सुझाव: आप पोस्ट के लिए पाठ के रूप में वेब पेज शीर्षक का उपयोग करके थोड़ा धोखा दे सकते हैं।

28
बहुत बहुत धन्यवाद फेसबूक। </ कटाक्ष>
mr_lou

धन्यवाद @Loda हमारा ध्यान खींचने के लिए
जिगर

28

सबसे पहले आपको हैंडलर शेयरिंग विकल्प के लिए क्वेरी इंटेंट की आवश्यकता है। फिर इरादे को फ़िल्टर करने के लिए पैकेज नाम का उपयोग करें तो हमारे पास केवल एक इरादा होगा कि हैंडलर साझाकरण विकल्प!

फेसबुक के माध्यम से साझा करें

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to share");
PackageManager pm = v.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
for (final ResolveInfo app : activityList) {
    if ((app.activityInfo.name).contains("facebook")) {
        final ActivityInfo activity = app.activityInfo;
        final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
        shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |             Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        shareIntent.setComponent(name);
        v.getContext().startActivity(shareIntent);
        break;
   }
}

बोनस - ट्विटर के माध्यम से साझा करें

Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Content to share");
PackageManager pm = v.getContext().getPackageManager();
List<ResolveInfo> activityList = pm.queryIntentActivities(shareIntent, 0);
for (final ResolveInfo app : activityList) {
    if ("com.twitter.android.PostActivity".equals(app.activityInfo.name)) {
        final ActivityInfo activity = app.activityInfo;
        final ComponentName name = new ComponentName(activity.applicationInfo.packageName, activity.name);
        shareIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        shareIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |             Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        shareIntent.setComponent(name);
        v.getContext().startActivity(shareIntent);
        break;
   }
}

और यदि आप किसी अन्य साझाकरण एप्लिकेशन के माध्यम से साझा करना चाहते हैं, तो उसे वहां खोजें Tép Blog - Android के माध्यम से अग्रिम साझा करें


13
उन तरीकों का उपयोग करके आप अभी भी फेसबुक और ट्विटर में टेक्स्ट (सिर्फ लिंक) साझा नहीं कर सकते हैं। आपको एंड्रॉइड के लिए एसडीके फेसबुक (ट्विटर) का उपयोग करना होगा।
secretlm

हैलो, मैंने यह कोशिश की, लेकिन यह उस संदेश को नहीं दिखाता है जो मैं इसे फेसबुक पर साझा करना चाहता हूं ... किसी भी विचार क्यों? यह मुझे लॉगिन करने और शो करने के लिए कहता है "क्या आपके दिमाग में है?" संकेत पाठ वास्तविक पाठ नहीं है जिसे मैं इसे साझा करना चाहता हूं
रमेश सांगली

यह काम नहीं करता है। यह सामान्य (डायलॉग) इरादे के साथ उसी खाली इनपुट को दिखाता है।
Ixx

3
लेकिन ट्विटर पर आसानी से पोस्ट किया जाता है
त्रिकालदर्शी

1
फेसबुक के लिए काम नहीं करता है, और ट्विटर पर साझा करने के लिए इरादे घटक सेट करने की कोई आवश्यकता नहीं है।
Juozas Kontvainis

11

इसलिए मेरे पास एक काम है, लेकिन यह मानता है कि आपके द्वारा साझा किए जा रहे पृष्ठ पर आपका नियंत्रण है ...

यदि आप अपने EXTRA_TEXT को इस तरह प्रारूपित करते हैं ...

String myText = "Hey!\nThis is a neat pic!";
String extraText = "http://www.example.com/myPicPage.html?extraText=\n\n" + myText;

... फिर गैर-फेसबुक ऐप्स पर, आपके टेक्स्ट को कुछ इस तरह दिखाई देना चाहिए:

http://www.example.com/myPicPage.html?extraText=

अरे!
यह एक साफ तस्वीर है!

अब यदि आप अपनी वेबसाइट को अपडेट करते हैं तो एक्स्ट्राटेक्स्ट क्वेरी पैरामीटर के साथ अनुरोध पेज के मेटा डेटा में एक्स्ट्राटेक्स्ट की सामग्री को वापस करता है।

<!-- Make sure to sanitize your inputs! e.g. http://xkcd.com/327/ -->
<meta name="title" content="Hey! this is a neat pic!">

फिर जब फेसबुक संवाद उत्पन्न करने के लिए उस यूआरएल से बच जाता है, तो वह शीर्षक मेटा डेटा पढ़ लेगा और इसे आपके शेयर संवाद में एम्बेड कर देगा।

मुझे लगता है कि यह एक बहुत अच्छा समाधान है, इसलिए नमक के एक दाने के साथ लें ...


(प्लस एक) xkcd संदर्भ के लिए।
आमिर आब्रो

2

ऐसा प्रतीत होता है कि फेसबुक ऐप इस इरादे को गलत तरीके से संभालता है। सबसे विश्वसनीय तरीका एंड्रॉइड के लिए फेसबुक एपीआई का उपयोग करना प्रतीत होता है।

एसडीके इस लिंक पर है: http://github.com/facebook/facebook-android-sdk

'उपयोग' के अंतर्गत, यह है:

फेसबुक संवाद प्रदर्शित करें।

SDK उपयोगकर्ता इंटरैक्शन के लिए कई WebView html संवादों का समर्थन करता है, जैसे दीवार पोस्ट बनाना। यह मूल Android UI को लागू करने और सीधे API के माध्यम से Facebook पर डेटा पास किए बिना त्वरित फेसबुक कार्यक्षमता प्रदान करने का इरादा है।

यह ऐसा करने का सबसे अच्छा तरीका लगता है - एक संवाद प्रदर्शित करें जो दीवार पर पोस्ट होगा। एकमात्र मुद्दा यह है कि उन्हें पहले लॉग इन करना पड़ सकता है


खैर, यह बिल्कुल वैसा नहीं है जैसा मैं पूछ रहा था। लेकिन वैसे भी संकेत के लिए धन्यवाद। मुझे इस काम को करने के लिए फ़ेसबुक शेयर के लिए एक अलग मेनू आइटम जोड़ना होगा ...
Goddchen

हाँ, मैं समझ गया कि आपका क्या मतलब है और यह एक कुतिया है, लेकिन मुझे अपने आवेदन में ACTION_SEND इरादे के साथ एक ही समस्या है और फेसबुक ने अपना ऐप ठीक नहीं किया है, इसलिए यह सबसे अच्छा विकल्प लगता है
HXCaine

3
मैंने अभी कुछ और खोज की है और पाया है कि इस समस्या के साथ पूरे इंटरनेट पर लोग हैं और फेसबुक बिल्कुल भी मदद नहीं कर रहा है। forum.developers.facebook.net/viewtopic.php?pid=255227
HXCaine

1
Check this out : By this we can check activity results also....
// Open all sharing option for user
                    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
                    sharingIntent.setType("text/plain");                    
                    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, ShortDesc+" from "+BusinessName);
                    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, ShortDesc+" "+ShareURL);
                    sharingIntent.putExtra(Intent.EXTRA_TITLE, ShortDesc+" "+ShareURL);
                    startActivityForResult(Intent.createChooser(sharingIntent, "Share via"),1000);
/**
     * Get the result when we share any data to another activity 
     * */
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch(requestCode) {
        case 1000:
            if(resultCode == RESULT_OK)
                Toast.makeText(getApplicationContext(), "Activity 1 returned OK", Toast.LENGTH_LONG).show();
            else
                Toast.makeText(getApplicationContext(), "Activity 1 returned NOT OK", Toast.LENGTH_LONG).show();
            break;
        case 1002:
            if(resultCode == RESULT_OK)
                Toast.makeText(getApplicationContext(), "Activity 2 returned OK", Toast.LENGTH_LONG).show();
            break;
        }// end switch



    }// end onActivityResult

1
ShareDialog shareDialog = new ShareDialog(this);
if(ShareDialog.canShow(ShareLinkContent.class)) {

    ShareLinkContent linkContent = new ShareLinkContent.Builder().setContentTitle(strTitle).setContentDescription(strDescription)
                            .setContentUrl(Uri.parse(strNewsHtmlUrl))
                            .build();
    shareDialog.show(linkContent);

}

0

ऐसा प्रतीत होता है कि यह फेसबुक ऐप में एक बग है जो अप्रैल 2011 में रिपोर्ट किया गया था और अभी भी एंड्रॉइड फेसबुक डेवलपर्स द्वारा तय किया जाना है।

पल भर के लिए एकमात्र काम उनके एसडीके का उपयोग करना है।


2
मुझे लगता है कि वे चाहते हैं कि आप दोस्तों के साथ साझा करने योग्य सामग्री साझा करने के लिए वेब ऐप का उपयोग करें, इसलिए आप डी विज्ञापन देख सकते हैं ... मैं एक ही समस्या के साथ हूं और मैं फेसबुक एप के माध्यम से फेसबॉक साझा करने को लागू करूंगा।
इगोर

0

यदि आप पाठ को # संदेश के भीख में दिखाना चाहते हैं तो आप इसे हैशटैग के रूप में साझा करेंगे

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.