獲得推送建立通知的相關內容
現在越來越多的app當中運用到了訊息推送的功能,接收並解析完訊息後一般需要點選在通知欄顯示出來並可被點選。根據這樣的業務邏輯,我總結了一下獲取到推送訊息顯示到通知欄並可被點選的操作:
方法一:
API 11以下:
1.新建一個notificationManager的物件
NotificationManager manager = context.getSystemService(Context.NOTIFICATION_SERVICE);
2.新建一個notification物件
Notification no = new Notification(icon, tickerText, when);
引數解析:icon是顯示的圖片,tickerText是在通知欄閃爍顯示的文字 ,when何時顯示,以當前時間為基線。
3.notification的相關設定
notification.flags = Notification.FLAG_AUTO_CANCEL;// 點選自動清除通知
notification.defaults = Notification.DEFAULT_ALL;//設定訊息到來的時候是否有鈴聲 是否振動
4.設定notification的點選事件----啟動一個activity,此處的activity要設定 new-Task
PendingIntent contentIntent = PendingIntent.getActivity(context, 0,intent, PendingIntent.FLAG_UPDATE_CURRENT);
引數解析:context是當前介面的上下文 ,requestcode是請求碼,一般用不到,intent是點選要執行的操作。
notification.setLatestEventInfo(context, title, content, contentIntent);
設定notification的點選事件,title為通知的標題,content為通知的內容。
5.將通知顯示出來
manager.notify(id,notification)
引數解析:id為通知的id。
第二種方法:API在11以上 使用的是Notification.Builder;
1.建立NotifictionManager的物件,用來管理notification
NotificationManager manager = context.getSystemService(Context.NOTIFICATION_SERVICE);
2.建立notification建立者的物件並進行設定。
Notification.Builder builder = new Notification.Builder(context).setTicker(顯示於螢幕頂端狀態列的文字").setSmallIcon();
設定在導航欄顯示的文字跟圖示
3.設定notification的點選事件
Intent intent = new Intent(context,ActivityXXX.class);
intent.setFlags(Intent.FLAG_New_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(上下文,請求碼,intent,PendingIntent.FLAG_UPDATE_CURRENT);
4.設定nofication顯示的樣式
//系統樣式
Notification note = builder.setContentIntent(pendingIntent).setTitle(title).setContentText(content).build();
//自定義樣式:
RemoteView view = new RemoteView(context.getPackageName(),R.layout,XXX);
view.setImageViewResource(R.id.icon,R.mipmap.ic_launcher); view.setTextViewText(R.id.tv_title,"天氣預報");view.setTextViewText(R.id.tv_content,"今晚有大到暴雨");
Notification notification = builder.setContent(view).setContentIntent(pendingIntent).build();
5.顯示出notification
manager.notify(id,note);
第三種方法:也是使用的是Notification builder
1.建立Notification的管理器
NotificationManager manager = context.getSystemService(Context.NOTIFICATION_SERVICE);
2.建立notification的建立者
Notification.Builder builder = new Notification.Builder(context).setTicker().setSmallIcan();
3.設定Notification的點選事件
Intent intent = new Intent();
intent.setClass(MainActivity.this,XXXActivity.class);
intent.setFlags(Intent.FLAG_New_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(上下文,請求碼,intent,PendingIntent.FLAG_UPDATE_CURRENT);
4.設定notification的樣式 此處用的是自定義的樣式
RemoteViews view = new RemoteViews(context.getPackageName(),R.layout,XXX);
view.setImageViewResource(R.id.icon,R.mipmap.ic_launcher); view.setTextViewText(R.id.tv_title,"天氣預報");view.setTextViewText(R.id.tv_content,"今晚有大到暴雨"); Notification note = builder.build();
note.contentView = view;
note.contentIntent = pendingIntent;
5.顯示出notification
manager.notify(id,note);
OK,結束了。。。以後有機會再補充,上傳原始碼。