Java tutorial
package com.bccs.bsecure; import android.annotation.TargetApi; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; import android.support.v4.app.NotificationCompat; /* * This file is part of Bsecure. A open source, freely available, SMS encryption app. * Copyright (C) 2015 Dr Kevin Coogan, Shane Nalezyty, Lucas Burdell * <p> * Bsecure is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * <p> * Bsecure is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * <p> * You should have received a copy of the GNU General Public License * along with Bsecure. If not, see <http://www.gnu.org/licenses/>. */ /** * Generated by Android Studio 6/5/2015 * Helper class for showing and canceling message received * notifications. * <p> * This class makes heavy use of the {@link NotificationCompat.Builder} helper * class to create notifications in a backward-compatible way. */ public class MessageReceivedNotification { /** * The unique identifier for this type of notification. */ private static final String NOTIFICATION_TAG = "Message received"; /** * Shows the notification, or updates a previously shown notification of * this type, with the given parameters. * <p> * Customize this method's arguments to present relevant content in * the notification. * <p> * Customize the contents of this method to tweak the behavior and * presentation of message received notifications. Make * sure to follow the * <a href="https://developer.android.com/design/patterns/notifications.html"> * Notification design guidelines</a> when doing so. * * @see #cancel(Context) */ public static void notify(final Context context, final String title, final String body) { final Resources res = context.getResources(); // This image is used as the notification's large icon (thumbnail). // Remove this if your notification has no relevant thumbnail. final Bitmap picture = BitmapFactory.decodeResource(res, R.drawable.ic_security_black_48dp); final String text = body; //Intent conversationIntent = new Intent("com.bccs.bsecure.recentconversation"); Intent conversationIntent = new Intent(context, Conversation.class); final NotificationCompat.Builder builder = new NotificationCompat.Builder(context) // Set appropriate defaults for the notification light, sound, // and vibration. .setDefaults(Notification.DEFAULT_ALL) // Set required fields, including the small icon, the // notification title, and text. .setSmallIcon(R.drawable.ic_security_black_48dp).setContentTitle(title).setContentText(text) // All fields below this line are optional. // Use a default priority (recognized on devices running Android // 4.1 or later) .setPriority(NotificationCompat.PRIORITY_DEFAULT) // Provide a large icon, shown with the notification in the // notification drawer on devices running Android 3.0 or later. .setLargeIcon(picture) // If this notification relates to a past or upcoming event, you // should set the relevant time information using the setWhen // method below. If this call is omitted, the notification's // timestamp will by set to the time at which it was shown. // Call setWhen if this notification relates to a past or // upcoming event. The sole argument to this method should be // the notification timestamp in milliseconds. //.setWhen(...) // Set the pending intent to be initiated when the user touches // the notification. .setContentIntent(PendingIntent.getActivity(context, 0, conversationIntent, PendingIntent.FLAG_UPDATE_CURRENT)) // Show expanded text content on devices running Android 4.1 or // later. .setStyle(new NotificationCompat.BigTextStyle().bigText(text).setBigContentTitle(title) .setSummaryText(body)) // Automatically dismiss the notification when it is touched. .setAutoCancel(true); notify(context, builder.build()); } @TargetApi(Build.VERSION_CODES.ECLAIR) private static void notify(final Context context, final Notification notification) { final NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) { nm.notify(NOTIFICATION_TAG, 0, notification); } else { nm.notify(NOTIFICATION_TAG.hashCode(), notification); } } /** * Cancels any notifications of this type previously shown using * {@link //notify(Context, String, int)}. */ @TargetApi(Build.VERSION_CODES.ECLAIR) public static void cancel(final Context context) { final NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ECLAIR) { nm.cancel(NOTIFICATION_TAG, 0); } else { nm.cancel(NOTIFICATION_TAG.hashCode()); } } }