summaryrefslogtreecommitdiff
path: root/plugins/phonegap-plugin-push/src/android/com/adobe/phonegap/push/PushHandlerActivity.java
diff options
context:
space:
mode:
authorArjun Roychowdhury <pliablepixels@gmail.com>2015-10-18 20:27:36 -0400
committerArjun Roychowdhury <pliablepixels@gmail.com>2015-10-18 20:27:36 -0400
commitced14a385a8606319e5d7d604f65c7a33c8e1476 (patch)
treea146b48048b31fd36c6a0336052ee5d2c34093b4 /plugins/phonegap-plugin-push/src/android/com/adobe/phonegap/push/PushHandlerActivity.java
parent50f2e00b5be8c0e13e5790c11cc2dc234577d447 (diff)
switched to new push plugin that works with JSON payloads
Diffstat (limited to 'plugins/phonegap-plugin-push/src/android/com/adobe/phonegap/push/PushHandlerActivity.java')
-rw-r--r--plugins/phonegap-plugin-push/src/android/com/adobe/phonegap/push/PushHandlerActivity.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/plugins/phonegap-plugin-push/src/android/com/adobe/phonegap/push/PushHandlerActivity.java b/plugins/phonegap-plugin-push/src/android/com/adobe/phonegap/push/PushHandlerActivity.java
new file mode 100644
index 00000000..57d2be84
--- /dev/null
+++ b/plugins/phonegap-plugin-push/src/android/com/adobe/phonegap/push/PushHandlerActivity.java
@@ -0,0 +1,70 @@
+package com.adobe.phonegap.push;
+
+import android.app.Activity;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.util.Log;
+
+public class PushHandlerActivity extends Activity implements PushConstants {
+ private static String LOG_TAG = "PushPlugin_PushHandlerActivity";
+
+ /*
+ * this activity will be started if the user touches a notification that we own.
+ * We send it's data off to the push plugin for processing.
+ * If needed, we boot up the main activity to kickstart the application.
+ * @see android.app.Activity#onCreate(android.os.Bundle)
+ */
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ GCMIntentService gcm = new GCMIntentService();
+ gcm.setNotification(getIntent().getIntExtra(NOT_ID, 0), "");
+ super.onCreate(savedInstanceState);
+ Log.v(LOG_TAG, "onCreate");
+
+ boolean isPushPluginActive = PushPlugin.isActive();
+ processPushBundle(isPushPluginActive);
+
+ finish();
+
+ if (!isPushPluginActive) {
+ forceMainActivityReload();
+ }
+ }
+
+ /**
+ * Takes the pushBundle extras from the intent,
+ * and sends it through to the PushPlugin for processing.
+ */
+ private void processPushBundle(boolean isPushPluginActive) {
+ Bundle extras = getIntent().getExtras();
+
+ if (extras != null) {
+ Bundle originalExtras = extras.getBundle(PUSH_BUNDLE);
+
+ originalExtras.putBoolean(FOREGROUND, false);
+ originalExtras.putBoolean(COLDSTART, !isPushPluginActive);
+ originalExtras.putString(CALLBACK, getIntent().getExtras().getString("callback"));
+
+ PushPlugin.sendExtras(originalExtras);
+ }
+ }
+
+ /**
+ * Forces the main activity to re-launch if it's unloaded.
+ */
+ private void forceMainActivityReload() {
+ PackageManager pm = getPackageManager();
+ Intent launchIntent = pm.getLaunchIntentForPackage(getApplicationContext().getPackageName());
+ startActivity(launchIntent);
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ final NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
+ notificationManager.cancelAll();
+ }
+} \ No newline at end of file