我需要添加哪些代码才能使Android通知具有用户输入选项? (类似于通知栏中的SMS快速回复选项)
答案 0 :(得分:1)
您应首先显示通知:
RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
.setLabel(replyLabel)
.build();
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(
0,
PendingIntent.FLAG_UPDATE_CURRENT
);
// Add to your action, enabling Direct Reply for it
NotificationCompat.Action action =
new NotificationCompat.Action.Builder(R.drawable.ic_stat_social_notifications_on, replyLabel, resultPendingIntent)
.addRemoteInput(remoteInput)
.setAllowGeneratedReplies(true)
.build();
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.addAction(action)
.setAutoCancel(true)
.setSmallIcon(R.drawable.ic_stat_social_notifications_on)
.setContentTitle("DevDeeds Says")
.setContentText("Do you like my tutorials ?");
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//Show it
mNotificationManager.notify(mRequestCode, mBuilder.build());
这是您的通知布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_notification"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="replynotification.direct.app.directreplynotification.NotificationActivity">
<TextView
android:id="@+id/replyMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text=""
android:textSize="15sp"
android:textColor="#000" />
</RelativeLayout>
从Intent我们将通过key key_text_reply
输入消息public class NotificationActivity extends AppCompatActivity {
// Key for the string that's delivered in the action's intent.
private static final String KEY_TEXT_REPLY = "key_text_reply";
// mRequestCode allows you to update the notification.
int mRequestCode = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_notification);
TextView textView = (TextView) findViewById(R.id.replyMessage);
textView.setText(getMessageText(getIntent()));
String returnMessage = "Thank you";
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_stat_toggle_check_box)
.setContentText(returnMessage);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
//update notification
mNotificationManager.notify(mRequestCode, mBuilder.build());
}
private CharSequence getMessageText(Intent intent) {
Bundle remoteInput = RemoteInput.getResultsFromIntent(intent);
if (remoteInput != null) {
return remoteInput.getCharSequence(KEY_TEXT_REPLY);
}
return null;
}
}