Bonjour la communauté,
J'ai une fonctionnalité basique qui me pose problème. Sur mon appli, je souhaite envoyer un email avec un fichier zip joint.
Cette fonctionnalité ne posait aucun problème sous Tokyo avec mes devices (Android 6.0, Android 8.0 et 8.1).
Je suis passé sous Rio et là ça ne fonctionne plus sur mes devices Android 8.0 et 8.1
Ci-dessous le procédure d'envoi de mail avec pièce jointe zip (chemin contenu dans la variable _Attachment) :
Avec ce code, le client de messagerie ne s'ouvre pas, l'appli ferme sans aucun message d'erreur. Le fichier Zip est disponible sur le stockage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 procedure CreateEmail(const _Recipient, _Subject, _Content, _Attachment: string); var JRecipient: TJavaObjectArray<JString>; Intent : JIntent; Uri : Jnet_Uri; AttachmentFile: JFile; begin JRecipient := TJavaObjectArray<JString>.Create(1); JRecipient.Items[0] := StringToJString(_Recipient); Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_SEND); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, JRecipient); Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(_Subject)); Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(_Content)); if (_Attachment <> '') then begin AttachmentFile:= TJFile.JavaClass.init(StringToJString(_Attachment)); Uri := TJnet_Uri.JavaClass.fromFile(AttachmentFile); Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID)); end; Intent.setType(StringToJString('vnd.android.cursor.dir/email')); SharedActivity.startActivity(Intent); end;
Si je retire la lignel'ouverture du client de messagerie s'ouvre, le message est remplit mais bien sûr il n'y a pas de pièce jointe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Intent.putExtra(TJIntent.JavaClass.EXTRA_STREAM, TJParcelable.Wrap((Uri as ILocalObject).GetObjectID));
Dois-je rajouter quelque chose dans le manifest ?
Je me dis que quelque chose a été modifié mais pas beaucoup d'info sur la doc Intent d'Android...
Merci pour vos commentaires
Lefju
PS
Il manque le free de Intent mais j'y travaille
Partager