![]() |
SendMail unter Android mit XE8
Hallo zusammen,
weil im Web viele falsche Lösungen für XE8 kursieren (meistens ältere unter XE5), wie z.B.: ![]() PROBLEM
Code:
habe ich hier mal einen funktionierenden Code unter XE8 gepostet:
uses
Androidapi.JNIBridge, ... ... procedure CreateEmail(const Recipient, Subject, Content: string); overload; var Intent: JIntent; begin Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SEND); Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, StringToJString(Recipient)); Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(Subject)); Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(Content)); // Intent.setType(StringToJString('plain/text')); Intent.setType(StringToJString('message/rfc822')); // LaunchActivity(Intent); LaunchActivity(TJIntent.JavaClass.createChooser(Intent, StrToJCharSequence('Which email app?'))); end; ![]() MEINE AKTUELLE LÖSUNG:
Code:
Der entscheidende Unterschied ist:
uses
Androidapi.JNI.JavaTypes , Androidapi.JNIBridge , Androidapi.JNI.GraphicsContentViewText , AndroidApi.Helpers , FMX.Helpers.Android ; ... procedure CreateEmail(const sRecp, sSubj, sBody : string); var Intent: JIntent; aDest : TJavaObjectArray<JString>; begin Intent := TJIntent.Create; aDest := TJavaObjectArray<JString>.Create(1); aDest.Items[0] := StringToJString( sRecp ); Intent.setAction(TJIntent.JavaClass.ACTION_Send); Intent.setFlags( TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); Intent.putExtra( TJIntent.JavaClass.EXTRA_EMAIL, aDest ); Intent.putExtra( TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(sSubj)); intent.putExtra( TJIntent.JavaClass.EXTRA_TEXT, StringToJString(sBody)); // Intent.setType(StringToJString('vnd.android.cursor.dir/email')); Intent.setType(StringToJString('message/rfc822')); SharedActivity.startActivity(TJIntent.JavaClass.createChooser(Intent, StrToJCharSequence('Which email app ?'))); end; 1. Fall String wird übergeben --> email Adresse wird NICHT der EmailApp übergeben, Zitat:
Zitat:
Dann gibt es aber noch verschiedene Philosophien welcher MIME Type der richtige ist:
Code:
Aber egal was ich nehme, es kommen immer auch Nicht-MailApps im Chooser hoch, so wie TotalCommander.Intent.setType(StringToJString('plain/text')); // Alle möglichen Apps kommen im Chooser Intent.setType(StringToJString('vnd.android.cursor.dir/email')); // Dise Option gibt es auch, läöuft aber auch nicht ideal Intent.setType(StringToJString('message/rfc822')); // Dies ist die empfohlene Version, hier sollten nur Mailfähige Apps angezeigt werden Kann natürlich sein das sich alle diese Apps für Email registriert haben, aber vielleicht gibt es ja noch Tricks und Optimierungen um das wirklich nur an echte Mail apps zu leiten. Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz