package com.jdroid.android.google.plus; import android.content.Intent; import android.support.v4.app.Fragment; import android.view.View; import com.google.android.gms.plus.PlusOneButton; import com.google.android.gms.plus.PlusOneButton.OnPlusOneClickListener; import com.jdroid.android.application.AbstractApplication; import com.jdroid.android.google.GooglePlayServicesUtils; import com.jdroid.android.social.AccountType; import com.jdroid.android.social.SocialAction; import com.jdroid.android.google.GooglePlayUtils; import java.util.Locale; public class GooglePlusOneButtonHelper { private static final int PLUS_ONE_REQUEST_CODE = 100; private static final int PLUS_ONE_UNDO_REQUEST_CODE = 101; private String url; protected PlusOneButton plusOneButton; private Fragment context; public GooglePlusOneButtonHelper(Fragment context, int plusOneButton) { this(context, (PlusOneButton)context.getView().findViewById(plusOneButton)); } public GooglePlusOneButtonHelper(Fragment context, PlusOneButton plusOneButton) { this.context = context; this.plusOneButton = plusOneButton; url = getUrl(); } public void onResume() { if (GooglePlayServicesUtils.isGooglePlayServicesAvailable(context.getActivity())) { plusOneButton.initialize(url, new OnPlusOneClickListener() { @Override public void onPlusOneClick(Intent intent) { if (intent != null) { if (intent.getAction().toLowerCase(Locale.US).contains("undo")) { context.startActivityForResult(intent, PLUS_ONE_UNDO_REQUEST_CODE); } else { context.startActivityForResult(intent, PLUS_ONE_REQUEST_CODE); } } } }); plusOneButton.setVisibility(View.VISIBLE); } else { plusOneButton.setVisibility(View.GONE); } } public void onActivityResult(int requestCode, int resultCode, Intent data) { if ((requestCode == PLUS_ONE_UNDO_REQUEST_CODE) && (resultCode != 0)) { AbstractApplication.get().getAnalyticsSender().trackSocialInteraction(AccountType.GOOGLE_PLUS, SocialAction.PLUS_ONE_UNDO, getUrl()); onUndoPlusOne(); } else if ((requestCode == PLUS_ONE_REQUEST_CODE) && (resultCode != 0)) { AbstractApplication.get().getAnalyticsSender().trackSocialInteraction(AccountType.GOOGLE_PLUS, SocialAction.PLUS_ONE, getUrl()); onPlusOne(); } } protected void onPlusOne() { // Do Nothing } protected void onUndoPlusOne() { // Do Nothing } protected String getUrl() { return GooglePlayUtils.getGooglePlayLink(); } }