250 messaggi dal 24 gennaio 2004
Salve
nel capitolo 12 del libro (sviluppare applicaz.......) stavo sperimentando i Launchers PhoneCallTask, SmsComposeTask e EmailComposeTask.
Seguendo l'esempio, se ad ogni button corrisponde ciascuno di questi task, ovviamente va tutto bene. Il mio problema, invece, sarebbe l'esecuzione in sequenza di tutti e 3 questi task, ossia chiamata, sms e email. Se gestisco questa cosa, appunto, in sequenza, ottendo però l'errore: Navigation is not allowed when the task is not in the foreground. Error: -2147220989.

Come posso gestire questa cosa? Ho provato anche ad eseguire ciascuno dei launcher in task asincroni separati, ma nulla.

Il problema, in particolare, sussiste nell'esecuzione in sequenza tra sms e email o viceversa

Grazie per l'aiuto

Di seguito il codice di esempio:

Dim phonecall As New PhoneCallTask()
phonecall.DisplayName = "Enzo"
phonecall.PhoneNumber = "123456"
phonecall.Show()
Dim sms As New SmsComposeTask
sms.Body = "sms prova"
sms.Show()
Dim email As New EmailComposeTask
email.Subject = "oggetto email prova"
email.Body = "corpo email prova"
email.Show()
Modificato da wenzo il 13 giugno 2012 20.05 -
24 messaggi dal 20 settembre 2011
about.me
Forse questo può aiutarti:
http://stackoverflow.com/questions/7373533/navigation-is-not-allowed-when-the-task-is-not-in-the-foreground-in-wp7-applic
250 messaggi dal 24 gennaio 2004
Grazie per la risposta.
Mhhh, avevo dato già un'occhiata, ma non mi ci trovo.
Non so se sbaglio, ma mi è parso di leggere che alcuni Launchers (come EmailComposeTask) si comportano diversamente dagli altri. Se uso la chiamata e l'sms, funziona, così anche se uso chiamata e email, ma sms e email creano il problema.
Mah, spero in qualche altra risposta.
Grazie
28 messaggi dal 15 settembre 2011
Non puoi lanciare così in sequenza i 3 launcher.
Dovresti rivedere il ciclo di vita dell' applicazione.
Con i launcher deleghi una operazione alle funzioni base del sistema operativo. L'applicazione lascia il suo stato "Running" passando allo stato "Deactivated". Per questo quando chiami il secondo launcher, ottieni questo errore.

Spero di averti aiutato.
Ciao
Modificato da Uba il 18 giugno 2012 15.00 -
250 messaggi dal 24 gennaio 2004
Grazie
Si, chiaro.
Dunque, io avrei questa necessità, cioè far partire una telefonata, poi un sms, poi una mail.
Come credi si possa organizzare una cosa del genere? Che tipo di documentazione potrei utilizzare?
28 messaggi dal 15 settembre 2011
Una possibile soluzione è la chiamata a catena.
Quando la applicazione viene riattivata, viene eseguito il metodo onNavigatedFrom.

Secondo me, una possibile implementazione del tuo scenario è:

1) Invocazione del primo launcher
Dim phonecall As New PhoneCallTask()
phonecall.DisplayName = "Enzo"
phonecall.PhoneNumber = "123456"
phonecall.Show()


2)
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
if(i=1)
{
i = 2;
Dim sms As New SmsComposeTask
sms.Body = "sms prova"
sms.Show()
}
if(i==2)
{
i=0;
Dim email As New EmailComposeTask
email.Subject = "oggetto email prova"
email.Body = "corpo email prova"
email.Show()
}
base.OnNavigatedFrom(e);
}

La variabile i è globale e ti serve per codificare il tipo di lanncher da invocare. Non l'ho provato. Ad occhio dovrebbe funzionare.
Ciao
250 messaggi dal 24 gennaio 2004
Grazie, lo provo subito
250 messaggi dal 24 gennaio 2004
Allora, come dici tu, se parto con la chiamata voce parte il Launcher PhoneTask. Poi, non va da nessuna parte, ossia il metodo OnNavigatedFrom non viene invocato, per cui non lancia ne SMS, ne Email

qui sotto il codice (VB)

Private Sub Button4_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button4.Click
Dim phonecall As New PhoneCallTask()
phonecall.DisplayName = "Enzo"
phonecall.PhoneNumber = "123456"
phonecall.Show()
i = 1
MessageBox.Show(i)
'Navigation is not allowed when the task is not in the foreground. Error: -2147220989
End Sub

Dim i As Integer = 0
Protected Overrides Sub OnNavigatedFrom(e As System.Windows.Navigation.NavigationEventArgs)
MessageBox.Show(i)
If (i = 1) Then
i = 2
Dim sms As New SmsComposeTask
sms.Body = "sms prova"
sms.Show()
End If
If (i = 2) Then
i = 0
Dim email As New EmailComposeTask
email.Subject = "oggetto email prova"
email.Body = "corpo email prova"
email.Show()
End If
Me.OnNavigatedFrom(e)
End Sub

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.