2017-07-03 2 views
0

Mon application Xamarin se bloque lorsque vous tentez d'envoyer un e-mail à partir d'Android. Voici mon code:crash dans Visual Studio lors de la tentative d'envoi d'un e-mail à partir d'Android

public class EmailHelper : Activity, IEmail 
{ 
... 
    private bool CreateEmail(string attachment) 
    { 
     var email = new Intent(Intent.ActionSend); 
     SettingsDataAdapter mySettingsDataAdapter = App.MySettingsDataAdapter; 
     email.PutExtra(Android.Content.Intent.ExtraEmail, new string[] { "[email protected]"}); 
     email.PutExtra(Android.Content.Intent.ExtraSubject, "test email"); 
     email.PutExtra(Android.Content.Intent.ExtraText, "see attachment"); 
     email.SetType("message/rfc822"); 
     var file = new Java.IO.File(attachment); 
     file.SetReadable(true, false); 
     var uri = Android.Net.Uri.FromFile(file); 
     email.PutExtra(Intent.ExtraStream, uri); 
     email.SetFlags(ActivityFlags.NewTask); 
     StartActivity(email); 
     return true; 
    } 
... 
} 

et la première erreur dans la fenêtre de sortie est:

attempt to invoke virtual method 'android.app.activitythread$applicationthread android.app.activitythread.getapplicationthread()' on a null object reference 

Toutes les idées? Merci d'avance!

+0

'référence d'objet nul', le déboguer et déterminer quel objet est nul ........ – SushiHangover

Répondre

0

Trouvé après plus creuser qu'une activité ne peut pas être démarré sans contexte. J'ai fini par changer

StartActivity(email); 

avec

((Activity)Forms.Context).StartActivity(email); 

et cette erreur spécifique partais. Juste une remarque que la prochaine erreur que j'ai frappé était "aucun fournisseur trouvé", ce qui était dû au fait qu'aucune application de messagerie n'était configurée dans l'émulateur.