2010-11-01 9 views
21

क्या एंड्रॉइड के लिए getsharekit.com के समान कुछ है? यह यूआरएल को सोशल नेटवर्किंग साइटों पर साझा करने की अनुमति देता है। क्या ऐसा कुछ भी है या क्या मुझे फेसबुक, ट्विटर और ईमेल के लिए अलग से कोड करने की आवश्यकता है?एंड्रॉइड में फेसबुक, ट्विटर और ईमेल पर यूआरएल साझा करना?

+1

प्रत्येक मामले के लिए थोड़ा के सही उत्तर इन सवालों में पाया जा सकता है: [फेसबुक] (http://stackoverflow.com/questions/7545254/android-and-facebook-share-intent) , [ट्विटर] (http://stackoverflow.com/questions/2077008/android-intent-for-twitter- एप्लिकेशन), [ईमेल] (http://stackoverflow.com/questions/8701634/send-email-intent) ('Intent.EXTRA_TEXT' का उपयोग कर ईमेल बॉडी में यूआरएल शामिल करें)। – Jonik

+0

यह मेरा समाधान है जो फेसबुक पर यूआरएल साझा करने के लिए ठीक काम कर रहा है, http://stackoverflow.com/a/29529335/513413 – Hesam

उत्तर

55

मुझे लगता है कि यदि आप क्या मतलब है पता नहीं है, लेकिन आप एंड्रॉयड में निर्मित बंटवारे मेनू का उपयोग कर सकते हैं ...

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

Intent i = new Intent(Intent.ACTION_SEND); 
i.setType("text/plain"); 
i.putExtra(Intent.EXTRA_SUBJECT, "Sharing URL"); 
i.putExtra(Intent.EXTRA_TEXT, "http://www.url.com"); 
startActivity(Intent.createChooser(i, "Share URL")); 

एप्लिकेशन को आप उदाहरण के लिए, उपयोगकर्ता के डिवाइस पर स्थापित नहीं है साझा करना चाहते हैं - फेसबुक, तो आप फेसबुक एसडीके का उपयोग करना होगा।

आप पाठ डेटा के रूप में अच्छी तरह से अन्य एप्लिकेशन से साझा को संभालने के लिए अपनी गतिविधि चाहते हैं, आप अपने AndroidManifest.xml को यह जोड़ सकते हैं:

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

आशा इस मदद करता है!

+1

मैं इंस्टॉल किए गए ऐप्स का उपयोग किये बिना समाधान ढूंढ रहा हूं। – sunil

+1

यह फेसबुक –

+0

के साथ काम नहीं करता है, धन्यवाद, मैंने टेक्स्ट/एचटीएमएल से टेक्स्ट/सादे में बदल दिया है और यह ठीक काम करता है, गतिविधि –

-4

मुझे इस के लिए बस ठीक काम करता है:

startActivity(Intent.createChooser(new Intent(Intent.ACTION_SEND, 
    Uri.parse("http://...")),"Share URL"));// share url is on your own 
+1

काम नहीं करता है और "कोई ऐप इस क्रिया को निष्पादित नहीं कर सकता" –

+0

काम नहीं कर रहा है: त्रुटि "कोई ऐप इस क्रिया को निष्पादित नहीं कर सकता" –

+0

कारण यह कोई ऐप नहीं कर सकता है यह क्रिया यह है कि कोई mimetype निर्दिष्ट नहीं किया गया है। ऐप फ़िल्टर प्रकार पर कार्रवाई भेजें। यदि आप इसे निर्दिष्ट नहीं करते हैं (टेक्स्ट/सादा) कोई ऐप उस इरादे को रोक नहीं देगा –

3

फेसबुक के लिए आप `उपयोग कर सकते हैं

https://m.facebook.com/sharer.php?u=website_url&t=titleOfThePost

वेबसाइट यूआरएल उदाहरण है अगर के लिए किसी भी संसाधन के लिए किसी भी बात refereing हो सकता है आप इंटरनेट से एक छवि प्राप्त करना चाहते हैं और इसे अपनी दीवार पर घुमाएंगे।

आशा है कि यह

1

आप इस कोशिश कर सकते हैं मदद मिलेगी ...

private void shareTextUrl() { 
     Intent share = new Intent(android.content.Intent.ACTION_SEND); 
     share.setType("text/plain"); 
     share.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); 

     share.putExtra(Intent.EXTRA_SUBJECT, "Title Of The Post"); 
     share.putExtra(Intent.EXTRA_TEXT, "<source url>"); 

     startActivity(Intent.createChooser(share, "Share text to...")); 
    } 
0

यहाँ मेरी कार्यान्वयन है, अगर आप सिर्फ पैकेज के नाम जोड़कर इच्छा आप और अधिक क्षुधा जोड़ सकते हैं। यह कोड अनुप्रयोगों को उनके नामों के अनुसार भी प्रकार देता है।

List<Intent> targetShareIntents = new ArrayList<Intent>(); 
    Intent shareIntent = new Intent(); 
    shareIntent.setAction(Intent.ACTION_SEND); 
    shareIntent.setType("text/plain"); 
    PackageManager pm = getActivity().getPackageManager(); 
    List<ResolveInfo> resInfos = pm.queryIntentActivities(shareIntent, 0); 
    if (!resInfos.isEmpty()) { 
     System.out.println("Have package"); 
     for (ResolveInfo resInfo : resInfos) { 
      String packageName = resInfo.activityInfo.packageName; 
      Log.i("Package Name", packageName); 

      if (packageName.contains("com.twitter.android") || packageName.contains("com.facebook.katana") 
        || packageName.contains("com.whatsapp") || packageName.contains("com.google.android.apps.plus") 
        || packageName.contains("com.google.android.talk") || packageName.contains("com.slack") 
        || packageName.contains("com.google.android.gm") || packageName.contains("com.facebook.orca") 
        || packageName.contains("com.yahoo.mobile") || packageName.contains("com.skype.raider") 
        || packageName.contains("com.android.mms")|| packageName.contains("com.linkedin.android") 
        || packageName.contains("com.google.android.apps.messaging")) { 
       Intent intent = new Intent(); 

       intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name)); 
       intent.putExtra("AppName", resInfo.loadLabel(pm).toString()); 
       intent.setAction(Intent.ACTION_SEND); 
       intent.setType("text/plain"); 
       intent.putExtra(Intent.EXTRA_TEXT, "https://website.com/"); 
       intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.share_text)); 
       intent.setPackage(packageName); 
       targetShareIntents.add(intent); 
      } 
     } 
     if (!targetShareIntents.isEmpty()) { 
      Collections.sort(targetShareIntents, new Comparator<Intent>() { 
       @Override 
       public int compare(Intent o1, Intent o2) { 
        return o1.getStringExtra("AppName").compareTo(o2.getStringExtra("AppName")); 
       } 
      }); 
      Intent chooserIntent = Intent.createChooser(targetShareIntents.remove(0), "Select app to share"); 
      chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetShareIntents.toArray(new Parcelable[]{})); 
      startActivity(chooserIntent); 
     } else { 
      Toast.makeText(getActivity(), "No app to share.", Toast.LENGTH_LONG).show(); 
     } 
    } 
संबंधित मुद्दे