2012-09-20 43 views
5

我通过该发送的请求的代码到警报管理器从警报广播接收器检索requestcode

Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, broadcast_intent, PendingIntent.FLAG_UPDATE_CURRENT); 

我想知道的是,在该广播接收器,如何可以retreive我用于设置requestcode(ROWID)的PendingIntent?

感谢

+0

还没有答案? Comon – Snake

回答

2

我正在寻找同样的事情。一种方法是将请求代码作为额外的Intent传递。

intent.putExtra("requestcode", rowId); 

然而,如果应用程序被杀死也没有办法来检索由意图传递的数据。

因此,您需要将rowId作为URI传递,并使用Intent Filter。

+0

如果应用程序被杀害,警报仍然会被注册。所以到期后你仍然可以得到不需要的代码? – Snake

+0

不,报警仍然被注册,但意图中包含的额外数据将丢失。我尝试过这个。 –

+0

啊我看,任何解释为什么是 – Snake

2
Intent broadcast_intent = new Intent(this, AlarmBroadcastReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, 
           broadcast_intent,PendingIntent.FLAG_UPDATE_CURRENT 
          ); 

最佳将是参照broadcast_intent通过内getBroadcast() - broadcast_intent.putExtras("REQUESTCODE",rowId) ;的额外内容如下:

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, rowId, 
           broadcast_intent.putExtras("REQUESTCODE",rowId), 
           PendingIntent.FLAG_UPDATE_CURRENT); 
2

的requestCode创建的PendingIntent时并非旨在传递到所述接收器使用时,它的目的是作为一种创建pendingIntent的应用程序可以管理多个pendingIntents的方法。

假设报警应用需要创建多个pendingIntents,并且以后需要取消或修改其中一个。 requestCode用于标识取消/修改哪一个。

要传递数据,请使用putExtra,如上所述。请注意,您可能非常希望将RowId用于requestCode和Extra数据。