2015-09-17 7 views
6

फेसबुक के Sharing on Android प्रलेखन हमें बताता है निम्नलिखित कोड का टुकड़ा के साथ ShareDialog को दिखाने के लिए:फेसबुक ShareDialog.canShow को संभालने के लिए कैसे() == झूठी Android पर

if (ShareDialog.canShow(ShareLinkContent.class)) { 
    ShareLinkContent linkContent = new ShareLinkContent.Builder() 
      .setContentTitle("Hello Facebook") 
      .setContentDescription(
        "The 'Hello Facebook' sample showcases simple Facebook integration") 
      .setContentUrl(Uri.parse("http://developers.facebook.com/android")) 
      .build(); 

    shareDialog.show(linkContent); 
} 

मेरा प्रश्न है कि हम क्यों ShareDialog जांच करने की आवश्यकता है। दिखा सकता हूँ()? किस परिदृश्य में यह संभवतः झूठी वापसी करेगा और क्या हमें इस परिदृश्य को संभालने की आवश्यकता है? उदाहरण कोड चुपचाप विफल हो जाएगा उपयोगकर्ता को कुछ भी नहीं बताओ।

उत्तर

19

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

तो, आपके सवाल का जवाब देना:

मेरा प्रश्न है कि हम क्यों ShareDialog.canShow (जाँच करने की आवश्यकता है)? परिदृश्य में यह संभवतः झूठी वापसी करेगा और क्या हमें इस परिदृश्य को को संभालने की आवश्यकता है?

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

मुझे handlePassThroughError() विधि पर, FacebookActivity कक्षा को डिबग करने में यह पता चला। (लॉग इन नहीं) त्रुटि संदेश है:

"प्रदत्त सामग्री दिखाने में असमर्थ। इसका आमतौर पर मतलब है कि फेसबुक ऐप इंस्टॉल या अद्यतित नहीं है। यदि वेब के माध्यम से दिखाया जा रहा है, तो इसका मतलब यह हो सकता है कि सामग्री में गुण जो इस चैनल के माध्यम से समर्थित नहीं हैं। "

तो, क्या हम जब canShow() रिटर्न false करना चाहिए?

यह आपके परिदृश्य पर निर्भर करता है। संभव समाधान होगा:

  1. एक संवाद दिखाएं (या Snackbar) उपयोगकर्ता है कि वे सामग्री इस तरह का साझा करने के लिए सक्षम होने के लिए फेसबुक एप्लिकेशन इंस्टॉल करना होगा कह;
  2. प्रमाणीकरण टोकन का अनुरोध करें, फेसबुक एसडीके का उपयोग कर उपयोगकर्ता को लॉग इन करें, और अपने स्वयं के संवाद का उपयोग करके सामग्री साझा करें और सीधे फेसबुक एपीआई को कॉल करें।

फेसबुक के लिए संभावित समाधानों में यह उनके दस्तावेज़ों पर शामिल होगा या लॉगकैट पर इस त्रुटि को लॉग इन करेगा।

उम्मीद है कि यह मदद करता है!

+0

फेसबुक की नौकरी करने में खुदाई करने के लिए धन्यवाद। बीटीडब्लू अब उनके पास यह 'ShareApi.share (linkContent, shareCallback) है;' उनके एसडीके में। –

-1
// for facebook 

    callbackManager = CallbackManager.Factory.create(); 
    shareDialog = new ShareDialog(this); 

    // this part is optional 

    shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() { 
     @Override 
     public void onSuccess(Sharer.Result result) { 

     } 

     @Override 
     public void onCancel() { 

     } 

     @Override 
     public void onError(FacebookException e) { 

     } 
    }); 
+0

यह मेरे प्रश्न से पूरी तरह से असंबंधित है। मैं विशेष रूप से जानना चाहता हूं कि हमें संवाद दिखाने से पहले ShareDialog.canShow() को क्यों कॉल करना है। –

+0

ShareDialog.canShow() आपके फेसबुक एसडीके एप्लिकेशन आईडी और आपकी सामग्री प्रकार की जांच कर रहा है ... आदि। –

0

इस समस्या का सामना करने वाले किसी व्यक्ति के लिए यह उत्तर।

@leocadiotine बहुत अच्छा था।

facebook sdk sample से, जब ShareDialog.canShow() झूठी वापसी आपको ShareApi.share फ़ंक्शन का उपयोग करना चाहिए।

+0

यह साझा करने वाले चित्रों को काम नहीं कर रहा है –

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