如何从Flutter应用程序打开应用程序?
我正在开发Flutter应用,需要在其中向用户显示导航。因此,如何像在Android中使用外部意图那样从Flutter应用程序中打开地图应用程序?
还是他们需要任何Flutter插件?
回答:
我建议您使用url_launcher飞镖包。
这样,您可以使用所有url模式打开(phone
,,sms
甚至maps
根据您的情况)。
为了在Android和iOS中打开Google Maps,您可以使用Hemanth Raj建议的常规Android Maps
URI模式。
_openMap() async { const url = 'https://www.google.com/maps/search/?api=1&query=52.32,4.917';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
如果要在Android上做出选择,则可以使用常规geo:
URI模式。
如果要专门打开iOS Maps API,则可以使用Cupertino Maps
URI模式。
如果您选择区分Android和iOS(未在所有平台上都使用Google Maps Api模式),则还必须在打开的地图调用中按以下方式进行操作:
_openMap() async { // Android
const url = 'geo:52.32,4.917';
if (await canLaunch(url)) {
await launch(url);
} else {
// iOS
const url = 'http://maps.apple.com/?ll=52.32,4.917';
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
}
或者,您可以在运行时使用dart.io
库Platform
类检查操作系统:
import 'dart:io';_openMap() async {
// Android
var url = 'geo:52.32,4.917';
if (Platform.isIOS) {
// iOS
url = 'http://maps.apple.com/?ll=52.32,4.917';
}
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
现在,我完成了软管维护(真正的任务……没有一些代码重构……^^’),我可以结束我的回答了。
正如我在开始使用url_launcher告诉您的那样,您可以使用所有URI模式来进行呼叫,发送短信,发送电子邮件等。
这里有一些代码可以做到这一点:
_sendMail() async { // Android and iOS
const uri = 'mailto:test@example.org?subject=Greetings&body=Hello%20World';
if (await canLaunch(uri)) {
await launch(uri);
} else {
throw 'Could not launch $uri';
}
}
_callMe() async {
// Android
const uri = 'tel:+1 222 060 888';
if (await canLaunch(uri)) {
await launch(uri);
} else {
// iOS
const uri = 'tel:001-22-060-888';
if (await canLaunch(uri)) {
await launch(uri);
} else {
throw 'Could not launch $uri';
}
}
}
_textMe() async {
// Android
const uri = 'sms:+39 349 060 888';
if (await canLaunch(uri)) {
await launch(uri);
} else {
// iOS
const uri = 'sms:0039-222-060-888';
if (await canLaunch(uri)) {
await launch(uri);
} else {
throw 'Could not launch $uri';
}
}
}
即使URI模式应该是标准(RFC)有时authority
和path
他们的部分可能的框架(Android或iOS)之间的差异。
因此,在这里我例外地管理不同的操作系统,但是,您可以使用dart.io
库Platform
类更好地做到这一点:
import 'dart:io'
然后在代码中:
if (Platform.isAndroid) {} else if (Platform.isIOS) {
}
我建议您始终在两种环境中对其进行测试。
您可以在此处检查Android和iOS架构文档:
- android
- iOS
如果您想在Android中类似于startActivity(但仅适用于Android平台),则可以使用dart包android_intent。
以上是 如何从Flutter应用程序打开应用程序? 的全部内容, 来源链接: utcz.com/qa/409550.html