package org.gdg.frisbee.android.activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.text.TextUtils; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.plus.PlusShare; import org.gdg.frisbee.android.Const; import org.gdg.frisbee.android.app.App; import org.gdg.frisbee.android.chapter.MainActivity; import org.gdg.frisbee.android.event.EventActivity; import timber.log.Timber; public class ParseDeepLinkActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent target = null; String deepLinkId = PlusShare.getDeepLinkId(getIntent()); if (!TextUtils.isEmpty(deepLinkId)) { target = parseDeepLinkId(deepLinkId); } else { if (Intent.ACTION_VIEW.equals(getIntent().getAction())) { target = new Intent(); target.setClass(getApplicationContext(), EventActivity.class); target.putExtra(Const.EXTRA_EVENT_ID, getIntent().getData().getLastPathSegment()); target.putExtra(Const.EXTRA_SECTION, EventActivity.EventPagerAdapter.SECTION_OVERVIEW); } } if (target != null && target.resolveActivity(getPackageManager()) != null) { startActivity(target); } finish(); } /** * Get the intent for an activity corresponding to the deep-link ID. * * @param deepLinkId The deep-link ID to parse. * @return The intent corresponding to the deep-link ID. */ private Intent parseDeepLinkId(@NonNull String deepLinkId) { Intent route = new Intent(); Timber.d("Deep Link id: %s", deepLinkId); String[] parts = deepLinkId.split("/"); App.from(this).getTracker().send(new HitBuilders.EventBuilder() .setCategory("gplus") .setAction("deepLink") .setLabel(deepLinkId) .build()); // Our deep links look like this: https://developers.google.com/events/<eventId>/join, // or <plus_id>/events/<eventId>/join join is optional if (deepLinkId.startsWith(Const.URL_DEVELOPERS_GOOGLE_COM)) { route.setClass(getApplicationContext(), EventActivity.class); route.putExtra(Const.EXTRA_EVENT_ID, parts[4]); route.putExtra(Const.EXTRA_SECTION, EventActivity.EventPagerAdapter.SECTION_OVERVIEW); } else { // Fallback to the MainActivity in your app. route.setClass(getApplicationContext(), MainActivity.class); } return route; } }