Java tutorial
/* * Copyright (C) 2014. * * BaasBox - info@baasbox.com * * 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.baasbox.android.samples.aloa.receive; 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.net.Uri; import android.os.Build; import android.support.v4.app.NotificationCompat; import com.baasbox.android.samples.aloa.R; import com.baasbox.android.samples.aloa.activities.MainActivity; /** * Helper class for showing and canceling new message * notifications. * <p> * This class makes heavy use of the {@link NotificationCompat.Builder} helper * class to create notifications in a backward-compatible way. */ public class NewMessageNotification { /** * The unique identifier for this type of notification. */ private static final String NOTIFICATION_TAG = "NewMessage"; /** * Shows the notification, or updates a previously shown notification of * this type, with the given parameters. * <p> * TODO: Customize this method's arguments to present relevant content in * the notification. * <p> * TODO: Customize the contents of this method to tweak the behavior and * presentation of new message 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 exampleString, final int number) { final Resources res = context.getResources(); final String ticker = exampleString; final String title = res.getString(R.string.new_message_notification_title_template, exampleString); final String text = res.getString(R.string.new_message_notification_placeholder_text_template, exampleString); 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_stat_new_message).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) // Set ticker text (preview) information for this notification. .setTicker(ticker) // Show a number. This is useful when stacking notifications of // a single type. .setNumber(number) // Set the pending intent to be initiated when the user touches // the notification. .setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT)) // 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()); } } }