package com.jdroid.android.google.plus; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTransaction; import com.google.android.gms.plus.PlusShare; import com.jdroid.android.activity.AbstractFragmentActivity; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.fragment.AbstractFragment; import com.jdroid.android.google.GooglePlayUtils; import com.jdroid.android.intent.IntentUtils; import com.jdroid.android.social.AccountType; import com.jdroid.android.social.SocialAction; import com.jdroid.android.utils.ExternalAppsUtils; import com.jdroid.java.http.MimeType; public class GooglePlusHelperFragment extends AbstractFragment { private static final String SHARE_LINK_KEY = "shareLink"; // Request code to use when launching the resolution activity public static final int SHARE_REQUEST_CODE = 1002; private String shareLink; public static void add(FragmentActivity activity, Class<? extends GooglePlusHelperFragment> googlePlusHelperFragmentClass, Fragment targetFragment) { add(activity, googlePlusHelperFragmentClass, null, targetFragment); } public static void add(FragmentActivity activity, Class<? extends GooglePlusHelperFragment> googlePlusHelperFragmentClass, Bundle bundle, Fragment targetFragment) { AbstractFragmentActivity abstractFragmentActivity = (AbstractFragmentActivity)activity; GooglePlusHelperFragment googlePlusHelperFragment = abstractFragmentActivity.instanceFragment( googlePlusHelperFragmentClass, bundle); googlePlusHelperFragment.setTargetFragment(targetFragment, 0); FragmentTransaction fragmentTransaction = abstractFragmentActivity.getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(0, googlePlusHelperFragment, GooglePlusHelperFragment.class.getSimpleName()); fragmentTransaction.commit(); } public static void remove(FragmentActivity activity) { Fragment fragmentToRemove = get(activity); if (fragmentToRemove != null) { FragmentTransaction fragmentTransaction = activity.getSupportFragmentManager().beginTransaction(); fragmentTransaction.remove(fragmentToRemove); fragmentTransaction.commit(); } } public static GooglePlusHelperFragment get(FragmentActivity activity) { return ((AbstractFragmentActivity)activity).getFragment(GooglePlusHelperFragment.class); } public static void removeTarget(FragmentActivity activity) { GooglePlusHelperFragment googlePlusHelperFragment = GooglePlusHelperFragment.get(activity); if (googlePlusHelperFragment != null) { googlePlusHelperFragment.setTargetFragment(null, 0); } } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); if (savedInstanceState != null) { shareLink = savedInstanceState.getString(SHARE_LINK_KEY); } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString(SHARE_LINK_KEY, shareLink); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if ((requestCode == SHARE_REQUEST_CODE) && (resultCode == Activity.RESULT_OK) && (shareLink != null)) { AbstractApplication.get().getAnalyticsSender().trackSocialInteraction(AccountType.GOOGLE_PLUS, SocialAction.SHARE, shareLink); shareLink = null; } } public void shareDeeplink(String content, String link) { PlusShare.Builder builder = new PlusShare.Builder(getActivity()); builder.setText(content); builder.setType(MimeType.TEXT); builder.setContentUrl(Uri.parse(link)); builder.setContentDeepLinkId(link); Intent intent = builder.getIntent(); shareLink = link; if (IntentUtils.isIntentAvailable(intent)) { getActivity().startActivityForResult(intent, SHARE_REQUEST_CODE); } else { GooglePlayUtils.showDownloadDialog(R.string.jdroid_googlePlus, ExternalAppsUtils.GOOGLE_PLUS_PACKAGE_NAME); } } public void share(String content, String link) { PlusShare.Builder builder = new PlusShare.Builder(getActivity()); builder.setText(content); builder.setType(MimeType.TEXT); builder.setContentUrl(Uri.parse(link)); Intent intent = builder.getIntent(); shareLink = link; if (IntentUtils.isIntentAvailable(intent)) { getActivity().startActivityForResult(intent, SHARE_REQUEST_CODE); } else { GooglePlayUtils.showDownloadDialog(R.string.jdroid_googlePlus, ExternalAppsUtils.GOOGLE_PLUS_PACKAGE_NAME); } } public static void openCommunity(String community) { AbstractApplication.get().getCurrentActivity().startActivity( new Intent(Intent.ACTION_VIEW, Uri.parse("https://plus.google.com/u/0/communities/" + community))); AbstractApplication.get().getAnalyticsSender().trackSocialInteraction(AccountType.GOOGLE_PLUS, SocialAction.OPEN_PROFILE, community); } }