【问题标题】:android can the deeplink be used to open a regular class?android可以用deeplink开普通班吗?
【发布时间】:2021-08-05 21:52:30
【问题描述】:

在android中,它可以设置deeplink在收到推送通知时启动一个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-notifications android-deep-link


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      • 2011-04-27
      • 2016-05-17
      • 2023-04-01
      • 2021-11-11
      相关资源
      最近更新 更多