aboutsummaryrefslogtreecommitdiff
path: root/WordPress/src/main/java/org/wordpress/android/ui/DeepLinkingIntentReceiverActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'WordPress/src/main/java/org/wordpress/android/ui/DeepLinkingIntentReceiverActivity.java')
-rw-r--r--WordPress/src/main/java/org/wordpress/android/ui/DeepLinkingIntentReceiverActivity.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/WordPress/src/main/java/org/wordpress/android/ui/DeepLinkingIntentReceiverActivity.java b/WordPress/src/main/java/org/wordpress/android/ui/DeepLinkingIntentReceiverActivity.java
new file mode 100644
index 000000000..5c8ef4da4
--- /dev/null
+++ b/WordPress/src/main/java/org/wordpress/android/ui/DeepLinkingIntentReceiverActivity.java
@@ -0,0 +1,82 @@
+package org.wordpress.android.ui;
+
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.text.TextUtils;
+
+import org.wordpress.android.R;
+import org.wordpress.android.models.AccountHelper;
+import org.wordpress.android.ui.accounts.SignInActivity;
+import org.wordpress.android.ui.reader.ReaderActivityLauncher;
+import org.wordpress.android.util.AppLog;
+import org.wordpress.android.util.AppLog.T;
+import org.wordpress.android.util.ToastUtils;
+
+/**
+ * An activity to handle deep linking.
+ *
+ * wordpress://viewpost?blogId={blogId}&postId={postId}
+ *
+ * Redirects users to the reader activity along with IDs passed in the intent
+ */
+public class DeepLinkingIntentReceiverActivity extends AppCompatActivity {
+ private static final int INTENT_WELCOME = 0;
+
+ private String mBlogId;
+ private String mPostId;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ String action = getIntent().getAction();
+ Uri uri = getIntent().getData();
+
+ // check if this intent is started via custom scheme link
+ if (Intent.ACTION_VIEW.equals(action) && uri != null) {
+ mBlogId = uri.getQueryParameter("blogId");
+ mPostId = uri.getQueryParameter("postId");
+
+ // if user is logged in, show the post right away - otherwise show welcome activity
+ // and then show the post once the user has logged in
+ if (AccountHelper.isSignedInWordPressDotCom()) {
+ showPost();
+ } else {
+ Intent intent = new Intent(this, SignInActivity.class);
+ startActivityForResult(intent, INTENT_WELCOME);
+ }
+ } else {
+ finish();
+ }
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+ // show the post if user is returning from successful login
+ if (requestCode == INTENT_WELCOME && resultCode == RESULT_OK)
+ showPost();
+ }
+
+ private void showPost() {
+ if (!TextUtils.isEmpty(mBlogId) && !TextUtils.isEmpty(mPostId)) {
+ try {
+ ReaderActivityLauncher.showReaderPostDetail(this, Long.parseLong(mBlogId), Long.parseLong(mPostId));
+ } catch (NumberFormatException e) {
+ AppLog.e(T.READER, e);
+ }
+ } else {
+ ToastUtils.showToast(this, R.string.error_generic);
+ }
+
+ finish();
+ }
+
+ @Override
+ public void onBackPressed() {
+ super.onBackPressed();
+ finish();
+ }
+}