Flutter:使用url_launcher打开外部浏览器、拨打电话、发送短信、打开第三方app、打开应用商店下载应用

news2024/11/16 0:18:28

前言

Flutter中的url_launcher是一个用于打开URL的插件。它允许在Flutter应用程序中打开网址、发送电子邮件、拨打电话等操作。使用url_launcher插件,可以轻松地在应用程序中集成各种URL操作。

官方地址
https://pub-web.flutter-io.cn/packages/url_launcher

安装

flutter pub add url_launcher

基本使用

打开网址

Center(
        child: ElevatedButton(
          onPressed: () async{
            final Uri url = Uri.parse('https://www.csdn.net/');
            if (!await launchUrl(url,mode:LaunchMode.externalApplication)) {
              throw Exception('Could not launch $url');
            }
          },
          child: const Text("打开浏览器"),
        )
)

这里有两个注意点:

  • 模拟器里无法正常运行,需要使用真机
  • 必须设置为mode:LaunchMode.externalApplication,否则会在应用内单独打开一个界面进行显示

电子邮件

Center(
          child: ElevatedButton(
        onPressed: () async {
          // 收件人邮箱
          String recipient = "15065845632@163.com";
          //邮件主题
          String subject = "邮件主题";
          // 邮件内容
          String body = "邮件内容";
          String mailtoUri =
              "mailto:$recipient?subject=$subject&body=$body";
          final Uri url = Uri.parse(mailtoUri);

          if (!await launchUrl(url, mode: LaunchMode.externalApplication)) {
            throw Exception('Could not launch $mailtoUri');
          }
        },
        child: const Text("发邮件"),
      ))

在这里插入图片描述
在这里插入图片描述
发短信

Center(
          child: ElevatedButton(
        onPressed: () async {
          // 收件人电话
          String recipient = "10086";
          // 短信内容
          String body = "1";
          String smsUrl = 'sms:$recipient?body=${Uri.encodeQueryComponent(body)}';
          final Uri url = Uri.parse(smsUrl);

          if (!await launchUrl(url, mode: LaunchMode.externalApplication)) {
            throw Exception('Could not launch $smsUrl');
          }
        },
        child: const Text("发短信"),
      ))

在这里插入图片描述在这里插入图片描述

打开第三方app

Center(
          child: ElevatedButton(
        onPressed: () async {
          final Uri url = Uri.parse('weixin://');
          if (!await launchUrl(url, mode: LaunchMode.externalApplication)) {
            throw Exception('Could not launch $url');
          }
        },
        child: const Text("打开微信"),
      ))

微信可以正常打开,下面这些是从网上搜集的,不清楚是否好用

QQ: mqq:// 
微信: weixin:// 
京东: openapp.jdmoble:// 
淘宝: taobao:// 
美团: imeituan:// 
支付宝: alipay:// 
微博: sinaweibo:// 
知乎: zhihu:// 
豆瓣fm: doubanradio:// 
网易公开课: ntesopen:// 
Chrome: googlechrome:// 
QQ浏览器: mqqbrowser:// 
uc浏览器: ucbrowser:// 
搜狗浏览器: SogouMSE:// 
百度地图: baidumap:// bdmap:// 
优酷: youku:// 
有道词典: yddictproapp:// 
QQ音乐:qqmusic://
腾讯视频:tenvideo://
网易云音乐:orpheus://

应用商店

小米商店:"mimarket://details?id=com.xX.XX"
华为商店:"appmarket://details?id=com.xx.xx"
oppo商店:"oppomarket://details?packagename=com.xx.XX"
vivo商店:""vivomarket://details?id=com.xx.Xx"

以使用oppo商店打开美团为例

ElevatedButton(
        onPressed: () async {
          final Uri url = Uri.parse('oppomarket://details?packagename=com.sankuai.meituan');
          if (!await launchUrl(url, mode: LaunchMode.externalApplication)) {
            throw Exception('Could not launch $url');
          }
        },
        child: const Text("下载美团"),
      ))

在这里插入图片描述

要想在应用商店打开,需要获取到包名,需要先下载一个应用宝(只要你的应用市场支持分享就行)
在这里插入图片描述
我这里分享到了微信里,如下图
在这里插入图片描述
打开

在这里插入图片描述
复制链接,你会得到这样的链接:

https://a.app.qq.com/o/simple.jsp?pkgname=com.sankuai.meituan&fromcase=70051&g_f=1182517&scenevia=XQYFX

com.sankuai.meituan这就是对应的包名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/812264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle 时间多少秒以后 oracle interval 多少分钟之前 Oracle日期1小时后 Java时间多少秒以后 Java日期多少天之前

Oracle 时间多少秒以后 oracle interval 多少分钟之前 Oracle日期1小时后 Java时间多少秒以后 Java日期多少天之前 一、概述 在项目开发中,遇到一个类似于 超时关闭的订单(超过1分钟后关闭订单) 的需求,在数据的时间写入时&#x…

【Python机器学习】实验06 KNN最近邻算法

文章目录 KNN算法前言 距离度量(1) 欧式距离(2) 曼哈顿距离(Manhattan distance)(3) 切比雪夫距离(Chebyshev distance)(4) 闵可夫斯基距离(Minkowski distance)(5) 汉明距离(Hamming distance)(6) 余弦相似度(Cosine Similarity) KNN算法介绍1 数据的准备2 划分训练数据和测试…

C++11 线程库

1 thread类的简单介绍 在C11之前,涉及到多线程问题,都是和平台相关的,比如windows和linux下各有自己的接口,这使得代码的可移植性比较差。C11中最重要的特性就是对线程进行支持了,使得C在并行编程时不需要依赖第三方库…

利用AI倾听熊猫爱的声音,预测交配成功

大熊猫是世界上最受喜爱的动物之一。原产于中国中部和西南部的山脉,具有独特的黑眼睛和黑白外套的熊于1990年被列入国际自然保护联盟(IUCN)濒危名单。它们的地位在2016年升级为易危物种,世界自然基金会估计现在大约有1&#xff0c…

计算机视觉常用数据集介绍

1 MINIST MINIST 数据集应该算是CV里面最早流行的数据了,相当于CV领域的Hello World。该数据包含70000张手写数字图像,其中60000张用于train, 10000张用于test, 并且都有相应的label。图像的尺寸比较小, 为28x28。 数…

QTableWidget setSortingEnable 函数使用详解

Qt助手的解释 If enable is true, enables sorting for the table and immediately trigger a call to sortByColumn() with the current sort section and order Note: Setter function for property sortingEnabled. 如果将 enable 设置为 true 那么就会立即调用 sortByColum…

真正帮你实现—MapReduce统计WordCount词频,并将统计结果按出现次数降序排列

项目整体介绍 对类似WordCount案例的词频统计,并将统计结果按出现次数降序排列。 网上有很多帖子,均用的相似方案,重写某某方法然后。。。运行起来可能会报这样那样的错误,这里实现了一种解决方案,分享出来供大家参考…

DHCP防护原理

电脑刚连接到网络 是没有IP地址的 。 通过发送广播到DHCPO服务器。 DHCP服务器响应对应的 IP地址(简要过程)。 如果有人私自挂接WIFI,相当于DHCP服务器,但这个DHCP服务器是假的,就会引起电脑接入获取家用WIFI的地址&…

十三.redis主从复制

概念 主从复制,指将一台redis服务器的数据,复制到其它的redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。master以写为主,slave以读为主。 默认情况…

小研究 - 面向 Spring 的热点代码在线部署方法研究(三)

随着Spring生态不断发展,越来越先进的部署方式降低了部署的复杂度,提高了不同环境下的部署效率,但是在预生产环境下,对频繁改动的热点代码,其部署效率不是很理想,一些简单的代码修改就会引发对所有依赖服务的重新编译部署,给项目部署、运维以及测试带来很多预期之外的影响。在线…

设计模式再探——代理模式

目录 一、背景介绍二、思路&方案三、过程1.代理模式简介2.代理模式的类图3.代理模式代码4.代理模式还可以优化的地方5.代理模式的项目实战,优化后(只加了泛型方式,使用CGLIB的代理) 四、总结五、升华 一、背景介绍 最近在做产品过程中对于日志的统一…

【Git】分支管理之创建、切换、合并、删除分支以及冲突处理

目录 一、理解分支 二、创建、切换、合并分支 三、删除分支 四、冲突处理 五、合并模式 六、合并策略 七、Bug分支处理 八、强制删除分支 一、理解分支 master其实就是一个指针 ,他指向的是主分支最近一次commit。我们可以创建新的分支,在新的分…

antv x6将节点拖动到两连线的节点中,自动插入

1、找到节点相交的边 /*** * 将节点拖入两节点之间自动插入【找相交的边】* date 2023-07-29*/export const findIntersectsEdge (graph, node) > {const edges graph.getEdges();const bbox node.getBBox();const lines [bbox.leftLine, bbox.rightLine, bbox.topLine…

《零基础入门学习Python》第073讲:GUI的终极选择:Tkinter10

我们不难发现,几乎每一个应用程序都有一些相同的地方,比如说:标题栏、状态栏、边框、滚动条、工作区。还有的就是 菜单。 传统的菜单有大家熟悉的 File,Edit,Help等,点开之后,是下拉菜单&#…

点云可视化工具2

文章目录 1. 序2. 开发环境2.1 QT PCL 3. 程序3.1 新建项目3.2 修改.pro文件3.2.1 添加头文件目录3.2.2 添加依赖的库文件 3.3 软件界面3.3.1 ui文件3.3.2 按钮图标3.3.3 其他界面设置 3.4 点云处理3.4.1 点云读取显示3.4.2 上/下一张显示点云3.4.3 状态栏显示点云信息3.4.5 线…

0基础五分钟学会使用shardingJDBC实现分表 及测试

1.引入相关依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.1.1</version> </dependency> 2.添加配置 不懂的地方自己看注释 主…

vue基础-虚拟dom

vue基础-虚拟dom 1、真实dom目标2、虚拟dom目标 1、真实dom目标 在真实的document对象上&#xff0c;渲染到浏览器上显示的标签。 2、虚拟dom目标 本质是保存节点信息、属性和内容的一个JS对象 更新会监听变化的部分 给真实的DOM打补丁

SpringBoot多环境开发-配置文件

在Spring Boot中进行多环境开发时&#xff0c;你可以使用配置文件来定义每个环境的属性。Spring Boot提供了一种方便的方式来管理和加载不同环境的配置文件。 以下是一些常见的配置文件命名约定&#xff1a; application.properties: 默认的配置文件&#xff0c;适用于所有环…

Unity 性能优化五:渲染模块压力

CPU压力 Batching 在GPU渲染前&#xff0c;CPU会把数据按batch发送给GPU&#xff0c;每发送一次&#xff0c;都是一个drawcall&#xff0c;GPU在渲染每个batch的时候&#xff0c;会切换渲染状态&#xff0c;这里的渲染状态指的是&#xff1a;影响对象在屏幕上的外观的渲染属性…

【公益】Q学友联合福田人力资源局开展“侨香社区促就业 技能培训强本领”

落实《“十四五”就业促进规划》文件精神&#xff0c;进一步提高就业劳动者就业技能水平&#xff0c;提高居民就业率&#xff0c;侨香社区党委坚持以党建为引领&#xff0c;整合多方资源&#xff0c;深入开展“我为群众办实事”&#xff0c;切合群众实际、满足群众需求&#xf…