/* -*- Mode: Java; tab-width: 20; indent-tabs-mode: nil; -*- * ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (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.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is Mozilla Android code. * * The Initial Developer of the Original Code is Mozilla Corporation. * Portions created by the Initial Developer are Copyright (C) 2010 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Alex Pakhotin * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #filter substitution package org.mozilla.@MOZ_APP_NAME@; import android.app.Activity; import android.app.NotificationManager; import android.content.Intent; import android.content.ActivityNotFoundException; import android.os.Bundle; import android.util.Log; import android.net.Uri; public class NotificationHandler extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.i("GeckoAppJava", "NotificationHandler.onCreate"); Intent intent = getIntent(); if (intent != null) handleIntent(intent); finish(); } protected void handleIntent(Intent notificationIntent) { String action = notificationIntent.getAction(); String alertName = ""; String alertCookie = ""; Uri data = notificationIntent.getData(); if (data != null) { alertName = data.getSchemeSpecificPart(); alertCookie = data.getFragment(); if (alertCookie == null) alertCookie = ""; } Log.i("GeckoAppJava", "NotificationHandler.handleIntent\n" + "- action = '" + action + "'\n" + "- alertName = '" + alertName + "'\n" + "- alertCookie = '" + alertCookie + "'"); int notificationID = alertName.hashCode(); Log.i("GeckoAppJava", "Handle notification ID " + notificationID); if (App.mAppContext != null) { // This should call the observer, if any App.mAppContext.handleNotification(action, alertName, alertCookie); } else { // The app is not running, just cancel this notification NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); notificationManager.cancel(notificationID); } if (App.ACTION_ALERT_CLICK.equals(action)) { // Start or bring to front the main activity Intent appIntent = new Intent(Intent.ACTION_MAIN); appIntent.setClassName(this, "org.mozilla.@MOZ_APP_NAME@.App"); try { startActivity(appIntent); } catch (ActivityNotFoundException e) { Log.e("GeckoAppJava", "NotificationHandler Exception: " + e.getMessage()); } } } }