android-notifications - android可以用deeplink开普通班吗?
问题描述
在 android 中,它可以设置深层链接以在收到推送通知时启动 Activity。
<activity
android:name=".ActivityForTestAction"
android:launchMode="singleTop"
>
<intent-filter >
<action android:name="demoapp.action.WRITE_TO_DATABASE" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="demoapp"
android:host="www.demoapp.com"
android:pathPrefix="/test" />
</intent-filter>
它只会使用“demoapp.action.WRITE_TO_DATABASE”和正确的 Uri 构建通知:
Intent intent = new Intent("demoapp.action.WRITE_TO_DATABASE");
intent.setData(Uri.parse("demoapp://www.demoapp.com/test"));
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
builder = new Notification.Builder(context)
.setContentIntent(pendingIntent)
... ...;
Notification notification = builder.build();
notificationManager.notify(100, notification);
它将打开ActivityForTestAction
如果点击通知。
但是,有些推送通知不需要任何ui(Activity),例如只需要写入数据库。
那么有没有办法仍然执行“深度链接”但实例化类并在那里运行操作?
解决方案
如果您不想打开任何活动,您可以简单地使用广播接收器。像这样改变这部分:
val intent = Intent(context,NotificationReceiver::class.java)
val pendingIntent = PendingIntent.getBroadcast(
cotext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT
)
然后在您的 BroadcastReceiveronReceive
方法上,您可以在不打开任何活动的情况下做任何您想做的事情。
推荐阅读
- html - 如何对图像产生这种效果
- mysql - 为什么这个 Javascript 函数会重写一个 div 的 innerHTML 而不是另一个?
- sql - 窗口函数可以与分组集一起使用吗?
- tkinter - tkinter labelframe 类继承问题
- angular - 如何使用反应形式创建动态列和行?
- javascript - (节点:359)UnhandledPromiseRejectionWarning:错误:无法在 Socket.onerror 连接(/home/runner/something/node_moduat
- flutter - 如何在flutter中卸载应用程序期间运行代码
- intellij-idea - 页面未找到使用 tomcat 部署的 java 项目
- react-native - React Native App 的自动填充地址表单
- osrm - osrm-partition 失败,自行车配置文件的退出代码为 136