PendingIntent 可以获取一个类作为参数吗?

Posted

技术标签:

【中文标题】PendingIntent 可以获取一个类作为参数吗?【英文标题】:does PendingIntent can get a class as a parameter? 【发布时间】:2014-09-05 10:48:33 【问题描述】:

我试图将 gcmRegisterer 从一个 Activity 重构为一个类。

但现在我看到了 sendPushMessage 方法。

GcmRegisterer 必须是 Activity 吗?

为了发送 PendingIntent?

private void sendNotification(String msg) 
    mNotificationManager = (NotificationManager) this
            .getSystemService(Context.NOTIFICATION_SERVICE);

    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            new Intent(this, GcmRegisterer.class), 0);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            this).setSmallIcon(R.drawable.ic_launcher)
            .setContentTitle("GCM Notification")
            .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
            .setContentText(msg);

    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());

【问题讨论】:

【参考方案1】:

因为您使用的是PendingIntent.getActivity,是的,它必须是一项活动。但您也可以选择使用PendingIntent.getBroadcast 发送广播,您可以使用BroadcastReceiverPendingIntent.getService 启动服务来收听该广播。

使用哪一个取决于您希望在用户点击通知时发生什么。

【讨论】:

【参考方案2】:

是的,你必须创建一个扩展 Activity 的 GcmRegisterer 类

【讨论】:

以上是关于PendingIntent 可以获取一个类作为参数吗?的主要内容,如果未能解决你的问题,请参考以下文章

PendingIntent requestCode flags 参数

Android kotlin 委托获取 intent 参数

PendingIntent

如何从 PendingIntent 中获取 Intent

如何获取和取消 PendingIntent?

解决PendingIntent传递参数为空的问题