首页 > 解决方案 > 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),例如只需要写入数据库。

那么有没有办法仍然执行“深度链接”但实例化类并在那里运行操作?

标签: android-notificationsandroid-deep-link

解决方案


如果您不想打开任何活动,您可以简单地使用广播接收器。像这样改变这部分:

    val intent = Intent(context,NotificationReceiver::class.java)
    val pendingIntent = PendingIntent.getBroadcast(
        cotext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT
    )

然后在您的 BroadcastReceiveronReceive方法上,您可以在不打开任何活动的情况下做任何您想做的事情。


推荐阅读