@Override public boolean canShow(final ShareContent shareContent, boolean isBestEffort) { return shareContent != null && MessageDialog.canShow(shareContent.getClass()); }
/** * Helper to show the provided {@link com.facebook.share.model.ShareContent} using the provided * Activity. No callback will be invoked. * * @param activity Activity to use to send the provided content * @param shareContent Content to send */ public static void show( final Activity activity, final ShareContent shareContent) { new MessageDialog(activity).show(shareContent); }
/** * Indicates whether it is possible to show the dialog for * {@link com.facebook.share.model.ShareContent} of the specified type. * * @param contentType Class of the intended {@link com.facebook.share.model.ShareContent} to * send. * @return True if the specified content type can be shown via the dialog */ public static boolean canShow(Class<? extends ShareContent> contentType) { DialogFeature feature = getFeature(contentType); return feature != null && DialogPresenter.canPresentNativeDialogWithFeature(feature); }
public void shareUsingMessengerDialog() { if (playerChoice == INVALID_CHOICE || computerChoice == INVALID_CHOICE) { ShareContent content = getLinkContent(); // share the app if (messageDialog.canShow(content)) { messageDialog.show(content); } else { showInstallMessengerAppInGooglePlay(); } } else { ShareContent content = getThrowActionContent(); if (messageDialog.canShow(content)) { messageDialog.show(content); } else { showInstallMessengerAppInGooglePlay(); } } }
shareDialog = new ShareDialog(this); shareDialog.registerCallback(callbackManager, callback); messageDialog = new MessageDialog(this); messageDialog.registerCallback(callbackManager, callback);
/** * Helper to show the provided {@link com.facebook.share.model.ShareContent} using the provided * Fragment. No callback will be invoked. * * @param fragment android.app.Fragment to use to send the provided content * @param shareContent Content to send */ public static void show( final android.app.Fragment fragment, final ShareContent shareContent) { show(new FragmentWrapper(fragment), shareContent); }
@Override public AppCall createAppCall(final ShareContent content) { ShareContentValidation.validateForMessage(content); final AppCall appCall = createBaseAppCall(); final boolean shouldFailOnDataError = getShouldFailOnDataError(); logDialogShare(getActivityContext(), content, appCall); DialogPresenter.setupAppCallForNativeDialog( appCall, new DialogPresenter.ParameterProvider() { @Override public Bundle getParameters() { return NativeDialogParameters.create( appCall.getCallId(), content, shouldFailOnDataError); } @Override public Bundle getLegacyParameters() { return LegacyNativeDialogParameters.create( appCall.getCallId(), content, shouldFailOnDataError); } }, getFeature(content.getClass())); return appCall; } }
@Override protected FacebookDialogBase<ShareContent, Sharer.Result> getDialog() { final MessageDialog dialog; if (SendButton.this.getFragment() != null) { dialog = new MessageDialog(SendButton.this.getFragment(), getRequestCode()); } else if (SendButton.this.getNativeFragment() != null) { dialog = new MessageDialog(SendButton.this.getNativeFragment(), getRequestCode()); } else { dialog = new MessageDialog(getActivity(), getRequestCode()); } return dialog; } }
@Override protected AppCall createBaseAppCall() { return new AppCall(getRequestCode()); }
/** * Helper to show the provided {@link com.facebook.share.model.ShareContent} using the provided * Fragment. No callback will be invoked. * * @param fragment android.support.v4.app.Fragment to use to send the provided content * @param shareContent Content to send */ public static void show( final Fragment fragment, final ShareContent shareContent) { show(new FragmentWrapper(fragment), shareContent); }
@Override protected void registerCallbackImpl( final CallbackManagerImpl callbackManager, final FacebookCallback<Result> callback) { ShareInternalUtility.registerSharerCallback(getRequestCode(), callbackManager, callback); }
private static void show( final FragmentWrapper fragmentWrapper, final ShareContent shareContent) { new MessageDialog(fragmentWrapper).show(shareContent); }
announceProgressDialog.setMessage(getString(R.string.progress_dialog_text)); if (MessageDialog.canShow(ShareOpenGraphContent.class)) { messageButton.setVisibility(View.VISIBLE);
private static void logDialogShare(Context context, ShareContent content, AppCall appCall) { String contentType; DialogFeature dialogFeature = getFeature(content.getClass()); if (dialogFeature == MessageDialogFeature.MESSAGE_DIALOG) { contentType = AnalyticsEvents.PARAMETER_SHARE_DIALOG_CONTENT_STATUS; } else if (dialogFeature == MessageDialogFeature.MESSENGER_GENERIC_TEMPLATE) { contentType = AnalyticsEvents.PARAMETER_SHARE_MESSENGER_GENERIC_TEMPLATE; } else if (dialogFeature == MessageDialogFeature.MESSENGER_MEDIA_TEMPLATE) { contentType = AnalyticsEvents.PARAMETER_SHARE_MESSENGER_MEDIA_TEMPLATE; } else if (dialogFeature == MessageDialogFeature.MESSENGER_OPEN_GRAPH_MUSIC_TEMPLATE) { contentType = AnalyticsEvents.PARAMETER_SHARE_MESSENGER_OPEN_GRAPH_MUSIC_TEMPLATE; } else { contentType = AnalyticsEvents.PARAMETER_SHARE_DIALOG_CONTENT_UNKNOWN; } AppEventsLogger logger = AppEventsLogger.newLogger(context); Bundle parameters = new Bundle(); parameters.putString( AnalyticsEvents.PARAMETER_SHARE_DIALOG_CONTENT_TYPE, contentType); parameters.putString( AnalyticsEvents.PARAMETER_SHARE_DIALOG_CONTENT_UUID, appCall.getCallId().toString()); parameters.putString( AnalyticsEvents.PARAMETER_SHARE_DIALOG_CONTENT_PAGE_ID, content.getPageId()); logger.logSdkEvent(AnalyticsEvents.EVENT_SHARE_MESSENGER_DIALOG_SHOW, null, parameters); } }