Android N新特性——Notification快速回復
Android N引入了一些新的API,其中增加了快速回復,捆綁通知,自定義檢視和訊息樣式,這篇文章主要給大家講一下快速回復功能是如何實現的。
首先我們利用Button的點選事件去觸發新增一個Notification,程式碼如下:
MainActivity.java
public static final String KEY_TEXT_REPLY = "key_text_reply";//獲取快速回復內容的key
public static final int NOTIFICATION_ID = 100;
......
private void addNotification(){
String replyLabel = getResources().getString(R.string.reply_label);
//建立一個遠端輸入(既:通知欄的快捷回覆)
RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
.setLabel(replyLabel)
.build();
//點選快速回復中傳送按鈕的時候,會傳送一個廣播給GetMessageReceiver
Intent intent = new Intent(MainActivity.this,GetMessageReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,0,intent,
PendingIntent.FLAG_ONE_SHOT);
//建立快速回復的動作,並新增remoteInut
Notification.Action replyAction = new Notification.Action.Builder(
R.drawable.ic_chat_blue_24dp,
getString(R.string.label), pendingIntent)
.addRemoteInput(remoteInput)
.build();
//建立一個Notification,並設定title,content,icon等內容
Notification newMessageNotification = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_account_circle_white_24dp)
.setContentTitle(getString(R.string.title))
.setContentText(getString(R.string.content))
.addAction(replyAction)
.build();
//發出通知
NotificationManager notificationManager =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(NOTIFICATION_ID, newMessageNotification);
}
上面的程式碼寫好之後,我們點選Button,通知欄就會彈出一個Android N風格的Notification,如下圖:
點選Notification中的快速回覆按鈕,就會彈出一個編輯框,讓使用者輸入要回復的內容,如下圖:
到這裡,我們的Android N特性的Notification就新增完成了,下面再說一說如何獲取快速回復中的內容。上面我們設定了一個pendingIntent,這個pendingIntent的作用就是當使用者點選傳送的時候,會傳送一個廣播出去,GetMessageReceiver就會接受到這個廣播,我們可以在這個廣播中獲取使用者輸入的回覆資訊,程式碼如下:
GetMessageReceiver.java
@Override
public void onReceive(Context context, final Intent intent) {
this.context = context;
//模擬傳送訊息
new Thread(new Runnable() {
@Override
public void run() {
try {
String replyContent = getMessageText(intent).toString();
Log.i("GetMessageReceiver",replyContent);
Thread.sleep(3000);//設定三秒鐘之後更新Notification的狀態
updateNotification();
Thread.sleep(3000);//三秒鐘後移除Notification
cancalNotification();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
//獲取快捷回覆中使用者輸入的字串
private CharSequence getMessageText(Intent intent) {
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
if (remoteInput != null) {
**//通過KEY_TEXT_REPLY來獲取輸入的內容**
return remoteInput.getCharSequence(MainActivity.KEY_TEXT_REPLY);
}
return null;
}
//訊息傳送狀態的Notification
private void updateNotification(){
Notification repliedNotification =
new Notification.Builder(context)
.setSmallIcon(R.drawable.ic_account_circle_white_24dp)
.setContentText("訊息傳送成功!")
.build();
//利用NOTIFICATION_ID同一個ID,更新Notification的內容
notificationManager = (NotificationManager)
context.getSystemService(context.NOTIFICATION_SERVICE);
notificationManager.notify(MainActivity.NOTIFICATION_ID,
repliedNotification);
}
//移除Notification
private void cancalNotification(){
notificationManager.cancel(MainActivity.NOTIFICATION_ID);
}
上述程式碼是GetMessageReceiver這個廣播接收器中的一些操作,並且模擬了傳送簡訊的過程
注意:BroadcastReceiver的生命週期只有十秒鐘左右,如果耗時操作時間過長,就會引起ANR,這裡是為了簡便程式碼,所以才在BroadcastReceiver中新增了模擬傳送資訊這個耗時操作,大家以後用到的時候,可以在BroadcastReceiver中開啟一個Service,然後在這個Service中進行一些耗時的操作!!!!!!!!!
Demo地址:https://github.com/hurui1990/AndroidNDemo
好了,到這裡為止,整個Android N Notification快速回復的新特性內容已經講完了,如果有什麼不對的地方,歡迎大家指正,謝謝!
相關文章
- Android O 新特性 — NotificationAndroid
- Android N新特性--多視窗支援Android
- Android N 完全不同以往的四個新特性Android
- Android 《Notification》Android
- Android 9.0新特性Android
- Android 4.4 KitKat新特性Android
- WWDC2016 Session筆記 - iOS 10 推送Notification新特性Session筆記iOS
- 10G新特性筆記之備份恢復新特性筆記
- Android開發--RecyclerView使用,看AndroidL新特性,android5.0新特性AndroidView
- Android中的NotificationAndroid
- Android Notification 詳解Android
- Android 通知之 NotificationAndroid
- android之Notification通知Android
- 10G RMAN恢復新特性
- Android通知Notification全面剖析Android
- Android Notification 通知詳解Android
- 10g 新特性 快改變跟蹤
- Android Studio 新特性詳解Android
- Android Q (Android 10.0)系統新特性Android
- Android之Notification和RemoteviewAndroidREMView
- [轉]Android 通知Notification 詳解Android
- Android 8 通知渠道(Notification Channels)Android
- android Notification 程式碼備份Android
- Kotlin 1.5.20 釋出了~快來看看新特性Kotlin
- 11g新特性之結果集快取快取
- Oracle 12C新特性-RMAN恢復表Oracle
- Oracle 12C 新特性之 恢復表Oracle
- DX12超強新特性:支援A卡與N卡混合交火
- Android 深入理解 Notification 機制Android
- Android Notification 用法的4種形式Android
- Android呼叫訊息欄通知(Notification)Android
- Oracle11新特性——SQL快取結果集(五)OracleSQL快取
- Oracle11新特性——SQL快取結果集(三)OracleSQL快取
- Yarn 的 Plug'n'Play 特性Yarn
- 【RMAN】Oracle11g備份恢復新特性Oracle
- Android Q 新特性及變更記錄Android
- Android R 新特性分析及適配指南Android
- Android Studio 3.2.0 正式版新特性Android