2013-01-22 16 views
10

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

ठीक है, मेरा प्रश्न यह है कि: क्या साझा करने के लिए वे कौन सी विधि साझा करना चुनते हैं, इस पर निर्भर करते हुए शेयर इरादे अतिरिक्त शाखाओं को बंद करने का कोई तरीका है? उदाहरण के लिए, यदि वे जीमेल या ट्विटर के माध्यम से साझा करते हैं, तो मौजूदा String + URL (वांछित विकल्प) EXTRA_TEXT का उपयोग करें, लेकिन यदि वे फेसबुक के माध्यम से साझा करना चुनते हैं, तो केवल EXTRA_TEXT के रूप में एक यूआरएल का उपयोग करें।

वास्तव में एंड्रॉइड में अंतर्निहित ऐसे सरल कार्य के लिए फेसबुक एंड्रॉइड एसडीके को लागू नहीं करना चाहते हैं।

अपना समय और सलाह की सराहना करें।

इस तरह कुछ करने का प्रयास किया, लेकिन यह स्पष्ट रूप से विफल रहता है क्योंकि यह केवल तभी जांच रहा है जब साझाकरण विकल्प मौजूद हो (जब शेयर पॉप अप हो, शेयर साझा करने के बाद नहीं,), जब वे कोई विधि चुनते हैं तो यह प्रतिक्रिया नहीं देता है।

String shareBody = "app string text " + act_txt + " more text! Get the app at http://www.appurl.com"; 

PackageManager pm = view.getContext().getPackageManager(); 
    List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0); 
    for(final ResolveInfo app : activityList) { 
     Log.i(TAG, "app.actinfo.name: " + app.activityInfo.name); 
     //if((app.activityInfo.name).contains("facebook")) { 
       if("com.facebook.katana.ShareLinkActivity".equals(app.activityInfo.name)) { 


      sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://www.appurl.com"); 
      startActivity(Intent.createChooser(sharingIntent, "Share idea")); 
      break; 
     } else { 
      sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "app name"); 
      sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); 
      startActivity(Intent.createChooser(sharingIntent, "Share")); 
      break; 
     } 
    } 

उत्तर

17

, एक समाधान पाया इस पर इतना कुछ और के लिए पूछ सवाल: https://stackoverflow.com/a/8550043/1938669

प्रयास यहाँ अपने मूल प्रश्न पोस्ट करीब था। संभावित शेयर इंडेंट सूची के उस चक्र के भीतर, आपको विशिष्ट साझाकरण विकल्प (जैसे फेसबुक या ट्विटर) पर लक्षित एक नया शेयर इरादा बनाने की आवश्यकता है

यहां एक अंतिम कार्य समाधान है जो फेसबुक चुनने पर केवल एक यूआरएल साझा करता है, अन्यथा शेयर पूर्ण पाठ स्ट्रिंग + यूआरएल:

public void shareIt(View view){ 
    //sharing implementation 
    List<Intent> targetedShareIntents = new ArrayList<Intent>(); 
    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
    sharingIntent.setType("text/plain"); 
    String shareBody = "string of text " + txt_var + " more text! Get the app at http://someapp.com"; 

    PackageManager pm = view.getContext().getPackageManager(); 
    List<ResolveInfo> activityList = pm.queryIntentActivities(sharingIntent, 0); 
    for(final ResolveInfo app : activityList) { 

     String packageName = app.activityInfo.packageName; 
     Intent targetedShareIntent = new Intent(android.content.Intent.ACTION_SEND); 
     targetedShareIntent.setType("text/plain"); 
     targetedShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "share"); 
     if(TextUtils.equals(packageName, "com.facebook.katana")){ 
      targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, "http://someurl.com"); 
     } else { 
      targetedShareIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); 
     } 

     targetedShareIntent.setPackage(packageName); 
     targetedShareIntents.add(targetedShareIntent); 

    } 

    Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0), "Share Idea"); 

    chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedShareIntents.toArray(new Parcelable[]{})); 
    startActivity(chooserIntent); 

} 
+3

आप लक्षितशेयर से (0) क्यों हटाते हैं –

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