/* * Copyright 2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.amazon.cordova.plugin; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; public class ADMHandlerActivity extends Activity { /* * 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) { super.onCreate(savedInstanceState); 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 isCordovaActive) { Bundle extras = getIntent().getExtras(); if (extras != null) { Bundle originalExtras = extras .getBundle(ADMMessageHandler.PUSH_BUNDLE); originalExtras.putBoolean(PushPlugin.COLDSTART, !isCordovaActive); ADMMessageHandler.cancelNotification(this); PushPlugin.sendExtras(originalExtras); // clean up the noticiationIntent extra ADMMessageHandler.cleanupNotificationIntent(); } } /** * Forces the main activity to re-launch if it's unloaded. */ private void forceMainActivityReload(/* Bundle extras */) { PackageManager pm = getPackageManager(); Intent launchIntent = pm .getLaunchIntentForPackage(getApplicationContext() .getPackageName()); startActivity(launchIntent); } }