gecko/mobile/android/base/background/announcements/AnnouncementPresenter.java

83 lines
3.0 KiB
Java

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.background.announcements;
import java.net.URI;
import org.mozilla.gecko.R;
import org.mozilla.gecko.sync.GlobalConstants;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
/**
* Handle requests to display a fetched announcement.
*/
public class AnnouncementPresenter {
/**
* Display the provided snippet.
* @param context
* The context instance to use when obtaining the NotificationManager.
* @param notificationID
* A unique ID for this notification.
* @param title
* The *already localized* String title. Must not be null.
* @param body
* The *already localized* String body. Must not be null.
* @param uri
* The URL to open when the notification is tapped.
*/
public static void displayAnnouncement(final Context context,
final int notificationID,
final String title,
final String body,
final URI uri) {
final String ns = Context.NOTIFICATION_SERVICE;
final NotificationManager notificationManager = (NotificationManager) context.getSystemService(ns);
// Set pending intent associated with the notification.
Uri u = Uri.parse(uri.toASCIIString());
Intent intent = new Intent(Intent.ACTION_VIEW, u);
// Always open the link with Fennec.
intent.setClassName(GlobalConstants.BROWSER_INTENT_PACKAGE, GlobalConstants.BROWSER_INTENT_CLASS);
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
final int icon = R.drawable.icon;
// Deprecated approach to building a notification.
final long when = System.currentTimeMillis();
Notification notification = new Notification(icon, title, when);
notification.flags = Notification.FLAG_AUTO_CANCEL;
notification.setLatestEventInfo(context, title, body, contentIntent);
// Notification.Builder since API 11.
/*
Notification notification = new Notification.Builder(context)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setContentIntent(contentIntent).getNotification();
*/
// Send notification.
notificationManager.notify(notificationID, notification);
}
public static void displayAnnouncement(final Context context,
final Announcement snippet) {
final int notificationID = snippet.getId();
final String title = snippet.getTitle();
final String body = snippet.getText();
final URI uri = snippet.getUri();
AnnouncementPresenter.displayAnnouncement(context, notificationID, title, body, uri);
}
}