Ios 如何在带有Flutter的iPhone上打开默认电子邮件应用程序?
我想制作一个flatter应用程序,其中一个要求是在Android或iPhone设备上打开本机电子邮件客户端。我不想创建新的电子邮件,只需打开电子邮件应用程序。如果可能的话,我希望能够用平台通用代码打开电子邮件客户端,如果没有,我想知道iOS端需要什么。我不寻找发送电子邮件的意图,因为我知道有一个插件在颤振为这一点。作为一名Android开发人员,我相信我知道如果必须这样做的话,如何从Flatter调用意图来实现隐含的意图,但我不熟悉iOS。插件可以做到这一点Ios 如何在带有Flutter的iPhone上打开默认电子邮件应用程序?,ios,email,dart,flutter,Ios,Email,Dart,Flutter,我想制作一个flatter应用程序,其中一个要求是在Android或iPhone设备上打开本机电子邮件客户端。我不想创建新的电子邮件,只需打开电子邮件应用程序。如果可能的话,我希望能够用平台通用代码打开电子邮件客户端,如果没有,我想知道iOS端需要什么。我不寻找发送电子邮件的意图,因为我知道有一个插件在颤振为这一点。作为一名Android开发人员,我相信我知道如果必须这样做的话,如何从Flatter调用意图来实现隐含的意图,但我不熟悉iOS。插件可以做到这一点 mailto:?主题=&body=
mailto:?主题=&body=
在默认电子邮件应用程序中创建电子邮件收件人
另请参见您需要两个插件:
android\u intent
和url\u启动器
if (Platform.isAndroid) {
AndroidIntent intent = AndroidIntent(
action: 'android.intent.action.MAIN',
category: 'android.intent.category.APP_EMAIL',
);
intent.launch().catchError((e) {
;
});
} else if (Platform.isIOS) {
launch("message://").catchError((e){
;
});
}
你可以用
范例
Email=Email(
致:['one@gmail.com,two@gmail.com'],
抄送:['foo@gmail.com'],
密件抄送:['bar@gmail.com'],
主题:'主题',
身体:“身体”
);
等待EmailLauncher.launch(电子邮件);
使用url\u启动器插件
电子邮件
setState(() {
_launched = _openUrl('mailto:${sejpalbhargav67@gmail.com}'');
});
这个图书馆为我完美地解决了这个问题:。这个例子很好,api简单明了。这个答案可能就是解决方案
我不想创建新的电子邮件,我只想打开默认的电子邮件应用程序。对不起,我不知道如何尝试
消息:
而不是mailto:…
您可能需要使用Uri.encodeFull('It not ok')
或Uri.encodeComponent('It not ok'))
并传递结果值。@AlejandroIván这是iOS版的吗?op明确表示他不想发送电子邮件。库允许您在不发送电子邮件的情况下打开电子邮件应用程序。这将发送电子邮件,而不是op想要的。在安卓系统上,这将打开应用程序内部的电子邮件应用程序。要在新窗口中打开它,请添加:flags:[Flag.Flag\u ACTIVITY\u new\u TASK]
AppAvailability是一个过时的插件,如果您使用它,它将在发布构建时生成。所以请避免使用这个插件
Future<void> _launched;
Future<void> _openUrl(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
setState(() {
_launched = _openUrl('tel:${+917600896744}');
});
setState(() {
_launched = _openUrl('mailto:${sejpalbhargav67@gmail.com}'');
});
void openEmailApp(BuildContext context){
try{
AppAvailability.launchApp(Platform.isIOS ? "message://" : "com.google.android.gm").then((_) {
print("App Email launched!");
}).catchError((err) {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("App Email not found!")
));
print(err);
});
} catch(e) {
Scaffold.of(context).showSnackBar(SnackBar(content: Text("Email App not found!")));
}
}