Non, il ne semble pas qu'il est possible d'obtenir le timerId du InvokeTimerRequest
d'origine lors de la manipulation d'un appel dans les API Cascades. Initialement, je pensais qu'il pourrait être possible de simplement transformer le InvokeRequest
en un InvokeTimerRequest
, mais en regardant de près les définitions d'API, ce sont des classes distinctes et un InvokeTimerRequest
est fondamentalement différent d'un InvokeRequest
.
Un InvokeTimerRequest
enregistre fondamentalement un temporisateur pour générer un appel à une cible spécifique, et lorsque/chaque fois que le temporisateur se déclenche, un nouvel objet InvokeRequest
distinct est créé et envoyé. Il s'agit de recommended to store the timerID lors de la création et de l'enregistrement du InvokeTimerRequest
, car le paramètre timerID doit être utilisé pour désenregistrer le temporisateur d'appel s'il est récurrent.
Si vous avez vraiment besoin pour obtenir l'ID de la demande, et vous êtes prêt à aller plus bas niveau, ce pourrait être possible en utilisant l'API BlackBerry Platform Services (BPS) pour gérer les événements invoke. Vous devez implémenter une boucle d'événement BPS dans votre service et vous inscrire pour recevoir et gérer navigator events. De l'événement, vous pouvez récupérer la structure navigator_invoke_invocation_t
décrivant l'appel, et vous devriez être en mesure d'appeler navigator_invoke_invocation_get_id()
pour récupérer l'ID du InvokeRequest
.
switch (bps_event_get_code(event)) {
case NAVIGATOR_INVOKE_TARGET: {
const navigator_invoke_invocation_t *invoke =
navigator_invoke_event_get_invocation(event);
// an invocation has been received
if(invoke) {
// retrieve invocation action
QString action = navigator_invoke_invocation_get_action(invoke);
if (action.compare("bb.action.system.TIMER_FIRED") == 0) {
QString id = navigator_invoke_invocation_get_id(invoke);
}
}
}
break;
}
Pour une approche plus C++, vous pouvez créer votre propre sous-classe de AbstractBpsEventHandler
pour gérer ce lieu.
Toutefois, à la fin, l'ID récupéré est très probablement l'ID du InvokeRequest
généré, et non le timerID que vous avez spécifié lors de la création et de l'enregistrement du InvokeTimerRequest
.