2013-10-21 9 views
6

मेरे पास मेरी शेयर संवाद के लिए निम्न कोड टुकड़ा अंदर नहीं:शेयर संवाद कार्यकरण

TabFour.java

public class TabFour extends Fragment { 
private UiLifecycleHelper uiHelper; 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_tab_four, container, false); 

    return rootView; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    uiHelper = new UiLifecycleHelper(getActivity(), callback); 
    uiHelper.onCreate(savedInstanceState); 

    OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class); 
    action.setProperty("book", "https://example.com/book/Snow-Crash.html"); 

    @SuppressWarnings("deprecation") 
    FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(getActivity(), action, "books.reads", "book") 
      .build(); 
    uiHelper.trackPendingDialogCall(shareDialog.present()); 
} 


@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() { 
     @Override 
     public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) { 
      Log.e("Activity", String.format("Error: %s", error.toString())); 
     } 

     @Override 
     public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) { 
      Log.i("Activity", "Success!"); 
     } 
    }); 
} 



@Override 
public void onResume() { 
    super.onResume(); 
    uiHelper.onResume(); 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    uiHelper.onSaveInstanceState(outState); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    uiHelper.onPause(); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    uiHelper.onDestroy(); 
} 
private Session.StatusCallback callback = new Session.StatusCallback() { 


    @Override 
    public void call(Session session, SessionState state, 
      Exception exception) { 
     // TODO Auto-generated method stub 

    } 
}; 

}

एमुलेटर पर

Facebok शेयर भार, फिर भी यह एक फोन पर नहीं है। साथ ही जब शेयर संवाद एमुलेटर पर लोड होता है, तो आप इसे साझा नहीं कर सकते क्योंकि ऊपरी बाईं ओर साझा बटन अक्षम है (दृश्यमान लेकिन क्लिक नहीं किया जा सकता है)। इसके अलावा, एमुलेटर एक टोस्ट संदेश प्रदर्शित करता है "शेयर पूर्वावलोकन नहीं लाया जा सका।" कृपया सहायता कीजिए!

मुझे उम्मीद है कि कोई मुझे यह समझा सकता है। धन्यवाद!

+0

क्या आपके पास अपने एमुलेटर पर फेसबुक ऐप है? और फेसबुक ऐप का संस्करण भी देखें। क्या आप कोई एडीबी त्रुटि लॉग देखते हैं? –

उत्तर

0
से https://developers.facebook.com/docs/android/share

अगर फेसबुक एप्लिकेशन इंस्टॉल है फेसबुक शेयर संवाद ही काम करता है

। इसलिए सुझाई गई विधि यह जांचना है कि शेयर संवाद प्रस्तुत किया जा सकता है और यदि प्रस्तुत किया जा सकता है, तो इसे अपनी सामग्री के साथ प्रस्तुत करें या साझा स्क्रीन प्रस्तुत करने के लिए वेब संवाद का उपयोग करें। यानी

if (FacebookDialog.canPresentShareDialog(getApplicationContext(), 
              FacebookDialog.ShareDialogFeature.SHARE_DIALOG)) 
{ 
     // Publish the post using the Share Dialog 
     FacebookDialog shareDialog = new FacebookDialog.ShareDialogBuilder(this) 
       .setLink("https://developers.facebook.com/android") 
       .build(); 
     uiHelper.trackPendingDialogCall(shareDialog.present()); 

} 
else 
{ 
     // Fallback. For example, publish the post using the Feed Dialog 
} 

और यहाँ किसी और विकल्प का उदाहरण

private void publishFeedDialog() { 
    Bundle params = new Bundle(); 
    params.putString("name", "Facebook SDK for Android"); 
    params.putString("caption", "Build great social apps and get more installs."); 
    params.putString("description", "The Facebook SDK for Android makes it easier and faster to develop Facebook integrated Android apps."); 
    params.putString("link", "https://developers.facebook.com/android"); 
    params.putString("picture", "https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png"); 

    WebDialog feedDialog = (
     new WebDialog.FeedDialogBuilder(getActivity(), 
      Session.getActiveSession(), 
      params)) 
     .setOnCompleteListener(new OnCompleteListener() { 

      @Override 
      public void onComplete(Bundle values, 
       FacebookException error) { 
       if (error == null) { 
        // When the story is posted, echo the success 
        // and the post Id. 
        final String postId = values.getString("post_id"); 
        if (postId != null) { 
         Toast.makeText(getActivity(), 
          "Posted story, id: "+postId, 
          Toast.LENGTH_SHORT).show(); 
        } else { 
         // User clicked the Cancel button 
         Toast.makeText(getActivity().getApplicationContext(), 
          "Publish cancelled", 
          Toast.LENGTH_SHORT).show(); 
        } 
       } else if (error instanceof FacebookOperationCanceledException) { 
        // User clicked the "x" button 
        Toast.makeText(getActivity().getApplicationContext(), 
         "Publish cancelled", 
         Toast.LENGTH_SHORT).show(); 
       } else { 
        // Generic, ex: network error 
        Toast.makeText(getActivity().getApplicationContext(), 
         "Error posting story", 
         Toast.LENGTH_SHORT).show(); 
       } 
      } 

     }) 
     .build(); 
    feedDialog.show(); 
} 

है और हमेशा चीजों को बाहर की जाँच के लिए एमुलेटर पर भरोसा नहीं करते। इसके बाद बस एक "एमुलेटर"। आप वास्तविक डिवाइस पर आसानी से अपने ऐप का पूर्वावलोकन कर सकते हैं। इसलिए अगर चीजें चल रही नहीं हैं, तो एमुलेटर पर, इसे वास्तविक डिवाइस पर सत्यापित करें। (बेशक, मैं मानता हूं, आपके पास एकाधिक डिवाइस, स्क्रीन आकार इत्यादि नहीं होने पर एमुलेटर अच्छा होता है)

पीएस: आपको एफबी डेवलपर्स वेबसाइट पर ऐप सेटिंग्स पेज में अपनी कुंजी हैश ठीक से सेट करने की भी आवश्यकता है।

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