【发布时间】:2021-05-20 11:54:09
【问题描述】:
我想显示一个包含一个或多个操作的通知,当按下这些按钮时,我想导航到 Flutter 应用程序中的特定路线,即使应用程序已关闭。 (我从来没有真正使用过本机代码。) 我通过消息渠道创建通知:
//Code shortened but leading code is irrelevant, as this code does show a notification
val launchIntent = context.packageManager.getLaunchIntentForPackage(context.packageName)
val pLaunchIntent = PendingIntent.getActivity(context, 0, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT)
val buttonIntent = Intent(context, ButtonReceiver::class.java);
val pButtonIntent = PendingIntent.getBroadcast(context, 0, buttonIntent, PendingIntent.FLAG_UPDATE_CURRENT);
val builder = NotificationCompat.Builder(context, "My_Id")
.setSmallIcon(smallIcon)
.setContentTitle(notificationTitle)
.setContentText(notificationText)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pLaunchIntent)
.setAutoCancel(true)
.setOnlyAlertOnce(true)
.setColor(Color.CYAN)
.addAction(smallIcon, "Test", pButtonIntent)
val someNotificationId = 1;
notify(someNotificationId, builder.build())
这个类扩展了一个广播接收器,它应该作用于按钮点击
class ButtonReceiver: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val launchIntent = context!!.packageManager.getLaunchIntentForPackage(context.packageName)
PendingIntent.FLAG_UPDATE_CURRENT)
context.startActivity(launchIntent)
FlutterNotificationPlugin.channel.invokeMethod("navigate", "/route")
Log.i("Notifications", "Invoked method")
}
}
我的想法是,当通过动作点击启动应用程序时,我首先启动 Flutter 应用程序,然后调用一个方法告诉 Flutter 应用程序导航到相应的路由。频道本身可以工作,但是当我单击该操作时,什么也没有发生。应用未启动。
我还在 Flutter App 的 AndroidManifest.xml 中添加了以下内容
<receiver android:name="me.flutter_notification_plugin.ButtonReceiver"/>
【问题讨论】:
标签: android flutter flutter-navigation