甚麼是Notification
可以看到上圖的NavigateTo SecondActivity這個 Notification
有很多地方可以看到Notification的應用
例如: 收到信件,需要軟體更新時,收到GCM時,鬧鐘
在這邊會稍微介紹如何使用Notification
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent notifyIntent = new Intent(MainActivity.this,
SecondActivity.class);
notifyIntent.putExtra("SecondActivity", "Btn");
PendingIntent appIntent = PendingIntent.getActivity(
MainActivity.this, 0, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = new Notification();
notification.icon = R.drawable.ic_launcher;
notification.tickerText = "notification on status bar.";
notification.flags |= Notification.FLAG_AUTO_CANCEL;
notification.setLatestEventInfo(MainActivity.this,
"NavigateTo", "SecondActivity", appIntent);
notificationManager.notify(0, notification);
首先先取得 NotificationManager 接著創造 intent , SecondActivity為點擊時倒向的Activity,
PendingIntent用來存取 intent ,其中有個重點 PendingIntent.FLAG_UPDATE_CURRENT為必要的,假設缺少這行會造成SecondActivity在getIntent的時候只會取得第一次的Intent,
如果需要瞭解這行的用意,只需要實作多個Intent帶入不同參數,並倒向同一個activity就可以複製出這個問題。
接著創造 Notification 並且做相關設定,其中Notification.FLAG_AUTO_CANCEL為點擊時Notification會自動消失。
在notificationManager.notify之後就會產生出notification。
接著要介紹如何客製化UI
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.customview);
contentView.setImageViewResource(R.id.image, R.drawable.ic_launcher);
contentView.setTextViewText(R.id.text, "Hello, this message is in a custom expanded view");
Intent notifyIntent = new Intent(MainActivity.this,
MainActivity.class);
PendingIntent appIntent = PendingIntent.getActivity(
MainActivity.this, 0, notifyIntent, 0);
int icon = R.drawable.ic_launcher;
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, "Custom Notification", when);
// Notification notification = new Notification();
notification.contentIntent = appIntent;
notification.contentView = contentView;
notification.flags |= Notification.FLAG_AUTO_CANCEL; //Do not clear the notification
notification.defaults |= Notification.DEFAULT_LIGHTS; // LED
notification.defaults |= Notification.DEFAULT_VIBRATE; //Vibration
notification.defaults |= Notification.DEFAULT_SOUND; // Sound
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(1, notification);
創建 RemoteViews contentView之後,並且設定 notification.contentView = contentView;
其中 R.layout.customview 為任意客製化UI。
在這裡附上 sample code

沒有留言:
張貼留言