- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序中有一个小链接,上面写着“给我们发电子邮件”。当您单击它时,我希望打开默认电子邮件应用程序,并开始向我们的电子邮件地址发送电子邮件。我曾经使用 url_launcher
包中的 launch()
方法来做到这一点,如下所示:
import 'package:url_launcher/url_launcher.dart' as url;
Future<bool?> pressedSendUsEmail() async {
bool? success;
try {
print('Pressed Send us an e-mail...');
success = await url.launch('mailto:our.email@gmail.com'); // Works like a charm...
print('success is $success');
} catch (e) {
print('Caught an error in Send us an e-mail!');
print('e is: ${e.toString()}');
}
return success;
}
但是现在,我收到一条警告,说 launch()
已被弃用!我应该改用 launchUrl()
。但是 launchUrl()
不带一个 String 参数,它带一个 Uri 参数......我不知道如何正确地写这个 Uri,所以它做我想要的!我试过:
success = await url.launchUrl(Uri(path: 'mailto:our.email@gmail.com'));
但这会引发错误,因为它无法解释“:”字符。我试过:
success = await url.launchUrl(
Uri.https('mailto:our.email@gmail.com', ''),
);
这会启动链接,但在浏览器中...它不会启动电子邮件到预先打印的地址。我尝试添加:
success = await url.launchUrl(
Uri.https('mailto:our.email@gmail.com', ''),
mode: url.LaunchMode.externalApplication,
);
这让我可以选择用哪个外部应用程序打开链接,但不幸的是,只列出了浏览器应用程序……没有列出电子邮件应用程序!
我应该如何编写我的命令来使 launchUrl()
完全按照旧的 launch()
做?非常感谢帮助!
编辑:
在下面那个问题得到满意的回答后,我现在有一个后续问题:
在应用程序的另一部分,有一个用户可以输入链接的地方,我曾经使用 launch()
来启动它...有没有简单的方法可以做到那,还有?
因为在那种情况下,我不知道链接是 http 还是 https 还是 mailto:!... 我宁愿不必编写大量代码来找出它!我只是想让它尝试完全按照编写的方式启动链接,只要编写正确,它就会工作。
最佳答案
试试这个:
void _sendEmail(){
String? encodeQueryParameters(Map<String, String> params) {
return params.entries.map((e) =>
'${Uri.encodeComponent(e.key)}=${Uri.encodeComponent(e.value)}')
.join('&');
}
final Uri emailLaunchUri = Uri(
scheme: 'mailto',
path: 'our.email@gmail.com',
query: encodeQueryParameters(<String, String>{
'subject': 'CallOut user Profile',
'body': widget.userModel?.username ?? ''
}),
);
launchUrl(emailLaunchUri);
}
关于flutter - 如何将新的 launchUrl() 方法与 "mailto:"链接一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72812591/
如果我通过 urlscheme 启动我的应用程序,我会在 application:didFinishLaunchingWithOptions: 中的启动选项中获取 url 并在那里处理它并返回 YES
我的应用程序中有一个小链接,上面写着“给我们发电子邮件”。当您单击它时,我希望打开默认电子邮件应用程序,并开始向我们的电子邮件地址发送电子邮件。我曾经使用 url_launcher 包中的 launc
我的应用程序中有一个小链接,上面写着“给我们发电子邮件”。当您单击它时,我希望打开默认电子邮件应用程序,并开始向我们的电子邮件地址发送电子邮件。我曾经使用 url_launcher 包中的 launc
我正在使用 chrome 选项卡查看来 self 的 android 应用程序的 URL,但是我遇到了一些崩溃问题 Fatal Exception: java.lang.SecurityExcepti
尝试使用 Microsoft.Identity.Client v1.1.0-preview 通过 Microsoft 对用户进行身份验证。当我执行 App.IdentityClientApp.Acqu
java.lang.NoSuchMethodError: No virtual method launchUrl(Landroid/app/Activity;Landroid/net/Uri;)V i
我完全按照说明进行操作:https://crosswalk-project.org/documentation/cordova/migrate_an_application.html 成功构建 xwa
我是一名优秀的程序员,十分优秀!