我要制作Flutter应用,其中一项要求是在Android或iPhone设备上打开本地电子邮件客户端。我不希望创建新电子邮件,只需打开电子邮件应用即可。我希望能够在可能的情况下使用平台通用代码打开电子邮件客户端,否则,我想知道iOS端需要什么。我不是在寻找发送电子邮件的意图,因为我知道Flutter中有一个用于此目的的插件。作为一名Android开发人员,我相信我必须知道如何从Flutter调用该隐式意图的意图,但是我对iOS不熟悉。
答案 0 :(得分:9)
答案 1 :(得分:9)
您需要两个插件:android_intent
和url_launcher
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){
;
});
}
答案 2 :(得分:1)
您可以使用email_launcher
示例
Email email = Email(
to: ['one@gmail.com,two@gmail.com'],
cc: ['foo@gmail.com'],
bcc: ['bar@gmail.com'],
subject: 'subject',
body: 'body'
);
await EmailLauncher.launch(email);
答案 3 :(得分:0)
使用url_launcher插件url_launcher
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}'');
});
答案 4 :(得分:0)
此答案可能是解决方法How to open default email app inbox in flutter?
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!")));
}
}
答案 5 :(得分:-1)
该库为我完美地解决了这个问题:https://pub.dev/packages/flutter_email_sender。该示例很好,并且api简单明了。