对于app来说,很多时候都需要在本app中唤起其他app应用,本文简单的列举了安卓和react-native对于唤起其他app的一些做法。

安卓

1)url scheme唤起

使用场景:

h5页面跳转到app;

一个app跳转到另一个app;

app内的跳转;

具体形式:

安卓的url唤起其实是采用了url scheme方式唤起,该方式和平常的url的结构基本一致;

scheme://host:port/pathname?querystring;

// 注意这里的scheme不是http护着https;

// demo:

test//baidu.com:9001/a/b?a1=1&a2=2

调用方式:假设A应用调用B应用;

在B应用的AndroidManifest.xml文件中定义相关配置:

B应用获取跳转过来的参数:

Intent intent = getIntent();

String action = intent.getAction();

String scheme = intent.getScheme();

Set categories = intent.getCategories();

Uri data = intent.getData();

data.getHost();

data.getPath();

data.getPort();

A应用如果是网页:

xxx

window.location = "test://baidu.com:9001/a/b?...";

A是一个app应用:

首先要知道B应用的url scheme的叫什么,然后再调用startActivity唤起;

Uri uri = Uri.parse("test://baidu.com:9001/a/b?a1=1&a2=2");

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

startActivity(intent);

优点:不暴露包命;

缺点:host path schemeA应用和B应用得规定死;

2)ComponentName唤起:

作用:就是用来定义一个应用程序组件,目的就是为了让app之间进行互相跳转;

用法:

step1:创建一个应用类组件--- new ComponentName(string pkg, string classname);其中

pkg:就是AndroidManifest.xml中manifest组件定义的package的包名;

classname:就是xml文件中activity组件定义的android:name的类名;

step2:创建一个意图Intent,然后添加组件到意图中;

Intent intent = new Intent()

intent.setComponent(intent)

step3:最后一步就是启动另一个应用 ---- startActivity(intent)

demo:

Intent intent = new Intent(Intent.ACTION\_MAIN);

/**知道要跳转应用的包命与目标Activity**/

ComponentName componentName = new ComponentName("kuyu.com.xxxx", "kuyu.com.xxxx.xxx.login.WelcomeActivity");

intent.setComponent(componentName);

intent.putExtra("", ""); //这里Intent传值

startActivity(intent);

RN

rn可以通过Linking这个组件来唤起其他app应用(前提要知道对应app应用的url scheme),他主要提供了三个主要的api调用:

1.canOpenURL(url):判断当前url scheme是否在安卓机器上有安装过;

Linking.canOpenURL('weixin://')

.then(isSupport => { ... })

.catch(e => {...})

2.openURL(url):在安卓上打开指定的url scheme的app应用;

Linking.canOpenURL('weixin://')

.then(isSupport => {

if (isSupport) {

return Linking.openURL('weixin://');

} else { ... }

}).catch(e => {...})

注意:本方法会返回一个Promise对象。如果用户在弹出的对话框中点击了确认或是 url 自动打开了,则 promise 成功完成。如果用户在弹出的对话框中点击取消或是没有对应应用可以处理此类型的 url,则 promise 会失败。

3.getInitialURL():如果本应用被另一个应用调用时,会返回相应的连接地址;

genInitialURL().then(url => {...}).catch(e => {...});

android启动程序唤起其它app,安卓和rn唤起其他app应用相关推荐

  1. android quicken模式,火爆全网的安卓优化神器:让APP秒启动、续航更强

    火爆全网的安卓优化神器:让APP秒启动.续航更强 2020-11-29 19:16:03 325点赞 3322收藏 203评论 安卓诞生以来,就一直有这样的话题 "安卓手机越用越卡" ...

  2. android网上书城设计报告,基于安卓的网上商城手机APP设计与实现

    摘要: 近几年来,随着互联网和多媒体运营的持续和有效的迅猛发展,大多数人都开始选择在网上进行足不出户就可以品尝天下鲜的生活,Internet这个英语名词在人们的生活中变成了熟悉和时尚的冥思.人们的生活 ...

  3. APP源码 教程 网页转APP 安卓Andriod应用开发 手机APP 移动网站

    本教程针对目前会制作网站并且想向网站移动端APP发展,并且善于技术钻研和研究的用户,怎么把网页转成APP.制作容易修改的APP.网站开发人员向移动APP制作端转变.快速开发APP,安卓Andriod应 ...

  4. android 启动图片 大小,ios 和安卓常用图标、启动图 尺寸

    ---------------------------------------------ios---------------------------------------------------- ...

  5. 手机wem文件转换软件_格式转换器app安卓版下载-格式转换器app手机文件转换器最新版 - APP软件乐园...

    格式转换器app是一款非常实用的手机文件转换神器,用户在这里可以轻松地将视频文件转成音频文件,将音频文件通过视频的方式展示出来,还能进行音视频的提取.非常的方便和实用,操作起来十分的简单,新手小白轻松 ...

  6. android 模拟器应用未安装,当我在Android Studio中运行它时,Android应用程序未安装在模拟器或设备上...

    我正在开发Android应用程序.在我的应用程序中,我正在测试在设备和模拟器上运行的应用程序.这是我的第三个Android应用程序开发.当我开发其他应用程序时,应用程序会自动安装在设备上或模拟器上的启 ...

  7. android应用程序判断题,Android开发工程师笔试判断题

    Android开发工程师笔试判断题20例 1.一个Activity就是一个可视化的界面或者看成是控件的容器.√ 2.Intent有很长的生命周期,是没有用户界面的程序,可以保持应用在后台运行,而不会因 ...

  8. Android APP开机启动,安卓APP开发自启动,安卓启动后APP自动启动 Android让程序开机自动运行APP

    让APP在安卓系统启动自动运行可以带来以下几个好处: 用户方便:当用户打开设备时,自动启动所需的APP可以让用户更方便地使用设备,不必手动打开APP. 提高用户黏性:自动启动APP可以让用户更快地开始 ...

  9. android app启动图片 加动画效果,Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案...

    Android Studio开发APP启动程序时开屏简单动画效果快速有效解决方案 大家在设计APP的末期,都会想给APP搞一些"花里胡哨"的特效来提高APP的B格.博主表示亲测有效 ...

最新文章

  1. Linux练习(显示环境变量)
  2. 数据结构学习-带头结点的单链表就地逆置
  3. 本地的文件怎么放到虚拟桌面_搬新家桌面文件怎么收纳?5个便宜实用的收纳神器,你买过几个?...
  4. C/C++中涉及存储方式的关键字:auto,static,register,extern2009-01-22 11:23auto关键字:
  5. Ajax和JSON-学习笔记03【JSON_基础语法】
  6. 网络安装LINUX系统原理,PXE网络引导系统自动化安装CentOS7
  7. 摆脱困境:将属性值注入配置Bean
  8. 【APICloud系列|7】开发一个APP完整流程及注意事项
  9. c语言百文百鸡问题答案,python_百文买百鸡问题
  10. 电脑PC端同时打开多个微信软件
  11. python整数类型没有取值范围限制_python综述(一),复习
  12. win7开启不了Aero
  13. css3箭头水平淡入淡出
  14. Android面试之计算机网络基础
  15. 7-97 约会成功了吗
  16. Axure原型:外卖订餐平台原型(APP、小程序)
  17. 网络:分布式和网络的区别
  18. 人工智能调研报告汇总
  19. BP神经网络预测公路运力
  20. java微信昵称保存_JAVA微信开发-如何保存包含特殊字符的微信昵称

热门文章

  1. IHttpHandler的学习(0)
  2. 基于Policy Gradient实现CartPole
  3. SearchScore
  4. POJ 1423 Big Number
  5. java中的与运算符
  6. 153.复用的相关概念 154.信道共享技术有哪些?
  7. 136.二层交换机是哪一层的设备,与三层交换机之间的区别?
  8. 28.进程和程序的区别
  9. 计算机视觉开源库OpenCV之绘制轮廓函数cv2.drawContours()介绍
  10. 穿迷宫、搭积木、现场编程 看看孩子们的机器人“大战”