gpt4 book ai didi

Android - 推送通知 - 回答

转载 作者:搜寻专家 更新时间:2023-11-01 09:36:45 26 4
gpt4 key购买 nike

很多信使/应用程序发送Android通知,我可以在不打开应用程序的情况下直接在通知中回复。例如,此功能在 WhatsApp 或 Telegram 中。

我现在的问题是,如何做到这一点?

//更新:

这是我试过的代码:

// Start Direct 
// Key for the string that's delivered in the action's
final String KEY_TEXT_REPLY = "ring_direct_reply";
replyLabel = App.getInstance().getResources().getString(R.string.action_reply);
RemoteInput remoteInput = new RemoteInput.Builder(
.setLabel(replyLabel)
.build();


PendingIntent chatPendingIntent = PendingIntent.getBroadcast(
context,
0,
new Intent(context, NotificationReceiver.class),
PendingIntent.FLAG_UPDATE_CURRENT
);

// Create the reply action and add the remote input.
Notification.Action action =
new Notification.Action.Builder(
android.R.drawable.ic_delete,
App.getInstance().getResources().getString(R.string.action_reply),
chatPendingIntent
)
.addRemoteInput(remoteInput)
.build();
// End Direct Reply


NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_action_push_notification)
.setContentTitle(title)
.setContentText(message)
.addAction(action)
.setStyle(new NotificationCompat.BigTextStyle().bigText(message));

Intent resultIntent = new Intent(context, DialogsActivity.class);
resultIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

TaskStackBuilder stackBuilder = TaskStackBuilder.create(context);
stackBuilder.addParentStack(DialogsActivity.class);
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mBuilder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE | Notification.DEFAULT_LIGHTS);
mBuilder.setAutoCancel(true);
mNotificationManager.notify(0, mBuilder.build());

我有以下两个问题: getting this error

and this error

//更新 2:

解决我的第一个问题后,我遇到了一个新问题:

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

但这可以通过添加 Looper.prepare() 来解决;

最佳答案

有两种方式:

  1. Hangtous 就是这样做的:使用牛轧糖中引入的回复 API。只需遵循官方指南:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#direct

  2. 据我所知,WhatsApp 是这样做的(我不确定电报):创建一个具有透明背景(在主题中设置)和屏幕顶部一些内容的 Activity 输入字段和发送按钮。

更新:

现在您展示了一些代码,实际上非常简单。您正在混合使用 native API 和兼容 API。

  • Notification 原生于 android 包 android.app.Notification
  • NotificationCompat 来自 android.support.v4.app.NotificationCompat
  • 包中的兼容支持库

你不能把它们混在一起。选择一个并只使用那个。我建议对所有内容都使用 compat,因为它会自动处理向后兼容性。

关于Android - 推送通知 - 回答,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42520114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com