Android 实例化一个虚拟 PendingIntent

3
我有一个Android库,其中包含一个创建通知的“Service”。据我所知,“Notification”必须设置“contentIntent”(“PendingIntent”),否则会抛出运行时异常。
问题在于,我希望用户能够直接使用这个“Service”,或者通过回调扩展它们自己来设置“PendingIntent”以便在创建“Notification”时使用。但是,如果他们选择不这样做,我需要设置“PendingIntent”为某些内容,以避免发生异常。是否有办法创建一个虚拟的“PendingIntent”作为填充?
以下是“createNotification”方法的代码示例:
PendingIntent p;
if(getPendingIntentCallback != null) {
    p = getPendingIntentCallback.getPendingIntent();
}
else {
    p = ?;
}
notification.contentIntent = p;

如果用户点击一个没有附加意图的通知,您希望它的行为是什么? - Jason Hessley
2个回答

8
PendingIntent pi=PendingIntent.getBroadcast(this, 0, new Intent("DoNothing"), 0);

这对我有用。它将启动“DoNothing”操作的广播。希望没有人会监听“DoNothing”广播并对其做出反应。但如果您愿意,可以构建更奇特的东西。 注意:我只是将其用作临时占位符。随着应用程序开发的进展,我将用更有用的内容替换它。


这是一个很好的回答,适用于概括原始问题的人。在我的情况下,我正在定义一组通知操作,其中大部分通过广播或getActivity执行某些操作,但在我的用例中,用户需要被提醒他们有选择“什么也不做”的选项。 - jmaculate

0

通知需要与某种操作相关联。当应用程序用户点击通知时,您必须告诉Android要执行什么操作。如果未定义contentIntent,则让您的库失败将使您的库用户知道他们已经错过了非常重要的步骤。

在创建通知之前,您可以检查待定意图。

if(getPendingIntentCallback != null) {
    p = getPendingIntentCallback.getPendingIntent();
    // create a notification

}
else {
    //don't create a notification
    Log.d("Notification", "Your notification was not created because no pending intent was found");
}

或者回答你提出的问题,你可以创建一个虚拟的待处理意图,执行一些任意操作,比如返回主屏幕。
参考这个线程: 如何在Android中以编程方式启动主屏幕

我会给你答案,因为你让我开始了正确的思路。我将把“Intent”设置为我的服务,并将通知ID作为额外信息放入其中,然后在“onStartCommand”中取消通知。 - Eliezer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接