簡述
Android開發(fā)中鳞上,大家或多或少會遇到這樣的情況这吻,當(dāng)應(yīng)用程序在后臺時吊档,需要向用戶發(fā)出一些信息提示用戶,比如:未讀的消息數(shù)唾糯,下載或更新完成后通知用戶怠硼。 而我們開發(fā)者就是通過手機(jī)最上方的狀態(tài)欄來傳遞通知信息,就引出了本次要講的----Notification.
老規(guī)矩移怯,先上圖:
開始代碼
點(diǎn)擊事件什么的就直接跳過香璃,直接來看設(shè)置到狀態(tài)欄的代碼 showNotification() ,講講里面的一些設(shè)置舟误。
Notification notification;
NotificationManager manager;
private final static int NOTIFY_ID = 100;
private void showNotification() {
manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Intent hangIntent = new Intent(this, MainActivity.class);
PendingIntent hangPendingIntent = PendingIntent.getActivity(this, 1001, hangIntent, PendingIntent.FLAG_UPDATE_CURRENT);
String CHANNEL_ID = "your_custom_id";//應(yīng)用頻道Id唯一值葡秒, 長度若太長可能會被截斷,
String CHANNEL_NAME = "your_custom_name";//最長40個字符嵌溢,太長會被截斷
notification = new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("這是一個貓頭")
.setContentText("點(diǎn)我返回應(yīng)用")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(hangPendingIntent)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.head))
.setAutoCancel(true)
.build();
//Android 8.0 以上需包添加渠道
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel(CHANNEL_ID,
CHANNEL_NAME, NotificationManager.IMPORTANCE_LOW);
manager.createNotificationChannel(notificationChannel);
}
manager.notify(NOTIFY_ID, notification);
}
Notification 的一些配置眯牧,想了解更多比如推送附帶響鈴振動之類的可自行搜索或者查看源碼
- setContentTitle 設(shè)置通知的標(biāo)題(位于第一行)
- setContentText 設(shè)置通知的文本(位于第二行)
- setSmallIcon 通知布局中使用的小圖標(biāo)
- setContentIntent 在點(diǎn)擊通知時發(fā)送的意圖
- setLargeIcon 設(shè)置顯示在提示和通知中的大圖標(biāo)
- setAutoCancel 在通知欄點(diǎn)擊我們定義的通知是否自動取消顯示
其中Android 8.0 以上的需要通過設(shè)置我們創(chuàng)建的NotificationChannel
其中 NOTIFY_ID參數(shù),盡量設(shè)置為全局唯一赖草,不然在其他地方發(fā)起的通知將會覆蓋這邊通知欄
關(guān)于需要點(diǎn)擊標(biāo)題欄傳值
就和在intent 傳值中一樣学少,然后可在生命周期onCreate 中獲取
傳值
Intent hangIntent = new Intent(this, MainActivity.class);
hangIntent.putExtra("test", "測試數(shù)據(jù)");
獲取值
getIntent().getStringExtra("test");
注意 有些做消息推送的功能,為了避免重復(fù)開啟,若是前往的界面的啟動模式為 singleTask
則需要通過onNewIntent 方法獲取
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.e("666",intent.getStringExtra("test"));
}
至此秧骑,簡單講完了Notification的一些基礎(chǔ)知識版确,希望能夠小伙伴們提供到幫助。