1.悬挂式Notification
public void suspendingNotification(Context context, String title, String content) {
Log
.w(TAG,
"show ui update notification")
mContext = context
NotificationManager manager = (NotificationManager) mContext
.getSystemService(NOTIFICATION_SERVICE)
//NormalIntent
Intent intent = mContext
.getPackageManager()
.getLaunchIntentForPackage(mContext
.getPackageName())
//PendingIntent
PendingIntent pendingIntent = PendingIntent
.getActivity(mContext,
0, intent,
0)
Notification notification
Notification
.Builder builder = new Notification
.Builder(mContext)
.setContentTitle(title)
.setContentText(content)
.setSmallIcon(R
.drawable.icon)
.setLargeIcon(BitmapFactory
.decodeResource(mContext
.getResources(), R
.drawable.icon))
//Suspending
if (Build
.VERSION.SDK_INT >= Build
.VERSION_CODES
.LOLLIPOP) {
Log
.w(TAG,
"show hanging notification")
builder
.setContentText(content)
.setFullScreenIntent(pendingIntent, true)
}
notification = builder
.build()
//NotificationIntent
notification
.contentIntent = pendingIntent
//ClearWhenClicked
notification
.flags = Notification
.FLAG_AUTO_CANCEL
manager
.notify(
0, notification)
}
2. 普通Notification
public void normalNotification(Context context, String title, String content) {
mContext = context
NotificationManager manager = (NotificationManager) mContext
.getSystemService(NOTIFICATION_SERVICE)
//NormalIntent
Intent intent = mContext
.getPackageManager()
.getLaunchIntentForPackage(mContext
.getPackageName())
//PendingIntent
PendingIntent pendingIntent = PendingIntent
.getActivity(mContext,
0, intent,
0)
Notification notification = new Notification
.Builder(mContext)
.setContentTitle(title)
.setContentText(content)
.setSmallIcon(R
.drawable.icon)
.setLargeIcon(BitmapFactory
.decodeResource(mContext
.getResources(), R
.drawable.icon))
.build()
notification
.contentIntent = pendingIntent
manager
.notify(
0, notification)
}
3. 自定义布局Notification
public void customNotification(Context context, String packageName, String title, String content) {
mContext = context
Intent intent
NotificationManager manager = (NotificationManager) mContext
.getSystemService(NOTIFICATION_SERVICE)
RemoteViews remoteViews = new RemoteViews(packageName, R
.layout.notification)
remoteViews
.setTextViewText(R
.id.title, title)
remoteViews
.setTextViewText(R
.id.content, content)
intent = new Intent()
intent
.setClass(mContext, MainActivity
.class)
intent
.putExtra(
"target",
"ok")
PendingIntent okIntent = PendingIntent
.getActivity(mContext, R
.id.sml, intent, PendingIntent
.FLAG_UPDATE_CURRENT)
remoteViews
.setOnClickPendingIntent(R
.id.sml, okIntent)
intent = new Intent()
intent
.setClass(mContext, MainActivity
.class)
intent
.putExtra(
"target",
"cancel")
PendingIntent cancelIntent = PendingIntent
.getActivity(mContext, R
.id.cancel, intent, PendingIntent
.FLAG_UPDATE_CURRENT)
remoteViews
.setOnClickPendingIntent(R
.id.cancel, cancelIntent)
Notification notification = null
Notification
.Builder builder = new Notification
.Builder(mContext)
.setSmallIcon(R
.drawable.icon)
.setPriority(Notification
.PRIORITY_DEFAULT)
builder
.setContent(remoteViews)
notification = builder
.build()
if (android
.os.Build.VERSION.SDK_INT >=
16) {
notification
.bigContentView = remoteViews
}
manager
.notify(
1, notification)
}
4. 展开/收缩Notification
public void inboxNotification(Context context, String packageName, String title, String content) {
mContext = context
Notification
.Builder mBuilder =
new Notification
.Builder(mContext)
.setSmallIcon(R
.drawable.icon)
.setContentTitle(title)
.setContentText(content)
RemoteViews remoteViews = new RemoteViews(packageName, R
.layout.activity_wide)
Notification notification = null
notification = mBuilder
.build()
if (android
.os.Build.VERSION.SDK_INT >=
16) {
notification = mBuilder
.build()
notification
.bigContentView = remoteViews
}
remoteViews = new RemoteViews(packageName, R
.layout.activity_slim)
notification
.contentView = remoteViews
NotificationManager mNotificationManager =
(NotificationManager) mContext
.getSystemService(Context
.NOTIFICATION_SERVICE)
// mId allows you to update the notification later on.
mNotificationManager
.notify(
1, notification)
}