android 可以使用深层链接打开常规 class 吗?

android can the deeplink be used to open a regular class?

在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 发送ui通知:

        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),例如,只需要写入数据库。

那么有没有办法仍然执行“深层链接”但实例化 class 和 运行 那里的操作?

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

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

然后在你的 BroadcastReceiver onReceive 方法上你可以做任何你想做的事而无需打开任何 activity.