Android 在一个APP里打开另一个APP
前言
不知道你们有没有注意过,每次打开一些软件的时候都会有广告引导页,有时候手滑点到了,会有进入手机上的另一个APP,这有没有引起你的注意呢?
运行效果图
正文
为了测试这个功能,首先要创建两个项目,然后运行起来都安装在你的手机上,这里为了方便了解,取名就是应用A和应用B,流程就是A应用里面打开B应用。
首先当然是创建项目了 DemoA
DemoB
创建好之后,别的先不管,都在手机上安装一下再说
① 打开另一个APP
接下来在DemoA的MainActivity里面写一个按钮,用于点击之后打开DemoB应用
<Button
android:id="@+id/btn_open_b"
android:text="打开DemoB"
android:textAllCaps="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
也在DemoB的布局文件改一下显示内容
<TextView
android:textSize="18sp"
android:textColor="#000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DemoB" />
运行一下
这样就打开了。那假如我要传递数据到DemoB呢?
② 数据传递
传数据其实就跟平时单个APP内部不同页面传数据类似,也是用Intent
然后在另一个APP里面接收并显示出来。现在先修改一下DemoB的布局,增加一个TextView用来显示接收的内容。
<TextView
android:id="@+id/tv_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:textColor="#000"
android:textSize="16sp" />
DemoB的MainActivity里
一旦两个应用程序里面改动了代码你就要在手机上运行一下,否则你改动的代码就不会生效
然后运行一下:
传值的问题就解决了。
③ 打开指定页面
通过包名跳转APP是进入默认的启动页面,你可以打开你的AndroidManifest.xml文件查看
那个Activity下面有这个默认启动就是那个
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
至于要打开指定的页面有两个方法
1.通过包名、类名
首先在DemoB的下面再创建一个TestActivity,简单加一个TextView
因为是要DemoB的TestActivity页面,所以这个activity在AndroidManifest.xml中需要配置
android:exported 属性,布尔类型,是否支持其他应用访问目标 Activity,默认值为 true;
android:exported="true"
否则你跳转会报错的,现在运行DemoB,使改动的代码生效 然后修改DemoA里面MainActivity的代码
运行效果
这样就可以了。
2.通过Action
修改DemoB的AndroidManifest.xml
然后运行在手机上,再修改DemoA的MainActivity
运行效果
其实还有一种方式是通过URL打开另一个APP,但是我不推荐这样做,为什么?没有原因…
- PHP-魔术变量
- 日志分析实战之清洗日志小实例7:查看样本数据,保存统计数据到文件
- hdu----(1671)Phone List(Trie带标签)
- PHP-数组
- hdu---1506(Largest Rectangle in a Histogram/dp最大子矩阵)
- 日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
- golang使用sort接口实现排序示例
- hdu----(5056)Boring count(贪心)
- hdu----(5055)Bob and math problem(贪心)
- hadoop3.0 Yarn支持网络资源:network原理设计文档说明【中文】
- PHP-超级全局变量
- 日志分析实战之清洗日志小实例5:实现获取不能访问url
- CentOS安装Redis、PHPredis扩展
- 日志分析实战之清洗日志小实例4:统计网站相关信息
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 【python opencv】直方图反投影
- 【python opencv】模板匹配
- 【python opencv】霍夫变换
- python动态柱状图图表可视化:历年软科中国大学排行
- 【MSQL数据库】MySQL中的NULL
- sklearn自带的数据集以及生成数据
- elaticserch的索引
- 有效地读取图像,对比opencv、PIL、turbojpeg、lmdb、tfrecords
- 消息队列的使用(kafka举例)
- 类加载过程,双亲委派模型?
- 图卷积网络-多标签分类
- MySQL parttion分区,以及分区和分表的区别
- ThreadPoolExcutor源码分析
- 动态分组卷积-Dynamic Group Convolution for Accelerating Convolutional Neural Networks
- (15)Shell概述及脚本执行方式