2011-10-06 12 views
6

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

मैं इस उपयोगी विषय पाया: launch facebook app from other app और सही शब्द खोजने की कोशिश की (अमेरिकन प्लान: // शब्द) एडीबी शेल कमांड का उपयोग कर, लेकिन मैं समझ नहीं कर सकते हैं ("प्रकाशित" " प्रकाशन "," पोस्ट "," शेयर "," साझाकरण "काम नहीं करते हैं)।

तब मैंने इरादे चयनकर्ता पर बनाए गए इरादे (लॉग के माध्यम से) को पकड़ने की कोशिश की जब मैं फेसबुक या ट्विटर पर क्लिक कर रहा था। मैंने पाया:

"शुरू: आशय {अधिनियम = android.intent.action.SEND typ = पाठ/सादे FLG = 0x3000000 सीएमपी = com.twitter.android/.PostActivity (अतिरिक्त है)} पीआईडी ​​17,575 से" फेसबुक के लिए, और

"प्रारंभ: इरादा {act = android.intent.action.SEND टाइप = टेक्स्ट/सादा flg = 0x3000000 cmp = com.facebook.katana /.ShareLinkActivity (अतिरिक्त है)} pid 17575 से" के लिए ट्विटर।

मैं निम्नलिखित कोड के साथ उन लोगों को उद्देश्य बनाया (बटन 'onClick() तरीकों पर):

Intent twitterIntent = new Intent(Intent.ACTION_VIEW); 
twitterIntent.setAction("android.intent.action.SEND"); 
twitterIntent.setFlags(0x3000000);     
twitterIntent.setType("text/plain");  
twitterIntent.setComponent(new ComponentName("com.twitter.android", ".PostActivity")); 
twitterIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)); 
startActivity(twitterIntent); 

लेकिन लॉग देखने के लिए भले ही:

Intent fbIntent = new Intent(Intent.ACTION_SEND); 
fbIntent.setType("text/plain"); 
fbIntent.setFlags(0x3000000); 
fbIntent.setComponent(new ComponentName("com.facebook.katana", ".ShareLinkActivity")); 
fbIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)); 
startActivity(fbIntent); 

मैं भी इस तरह की कोशिश की वही कुछ नहीं होता है।

कोई विचार?

+0

क्या "0x3000000 "? – NitZRobotKoder

उत्तर

9

मुझे लगता है कि आपको setComponent के बजाय setClassName का उपयोग करना चाहिए।

intent.setClassName("com.facebook.katana", "com.facebook.katana.ShareLinkActivity"); 

intent.setClassName("com.twitter.android", "com.twitter.android.composer.ComposerActivity"); 

नोट: हाल ट्विटर संस्करणों का उपयोग कर रहे हैं 'com.twitter.android.composer.ComposerActivity' ('com.twitter.android.PostActivity' के बजाय)

+0

मुझे पता था कि ऐसा करने का एक आसान तरीका था! बहुत धन्यवाद @ जॉम्पीस, आपकी पोस्ट ने मुझे बचाया !! – Noneu

+0

अमेज़िंग, यह काम करता है !!! – NullPointerException

+1

क्या कोई भी क्लास नाम को केवल ट्विटर एप्लिकेशन खोलने के लिए जानता है? intent.setClassName ("com.twitter.android", "com.twitter.android"); जाहिर है यह काम नहीं करता है। – SoH

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