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,但是我不推荐这样做,为什么?没有原因…
相关文章
- Android API之android.content.BroadcastReceiver
- uni-app:ios/android中的nvue和vue页面加载自定义字体(hbuilderx 3.7.3)
- 【已解决】unity4.2.0f4 导出Android工程报错:Error building Player: ArgumentException: Illegal characters in path. [unity导出android工程 报错,路径含有非法字符]
- android 小游戏
- Android 自定义View(二)绘制一个封闭多边形
- Android kotlin 系列讲解(进阶篇) Android之Activity的生命周期
- Android的报错提示:Failed to resolve: com.android.support.test.espresso:espresso-core:3.0.2
- Error running app: This version of Android Studio is incompatible with the Gradle Plugin used. Try d
- Android 11.0 12.0无源码app修改它的icon图标
- Android 11.0 12.0Recent列表不显示某个app
- Android 9.0 Launcher3 禁止卸载某个第三方app
- Android 10.0 app全屏系统属性控制上滑是否显示虚拟导航栏和状态栏
- Android 10.0 framework去掉长按webview界面弹框中的 打开 字符串
- android 10.0 SystemUI 状态栏下拉快捷添加截图快捷开关
- Android Switch控件自定义样式
- Android android studio 项目放在源码中编译
- ':app@debug/compileClasspath': Could not find any version that matches com.android.support:appcompat-v7:30.+.
- android 短信打开APP功能及注意事项
- Android LayoutInflater详解
- 【错误记录】p7zip 交叉编译 Android 版本 NDK 报错 ( Application.mk | APP_ABI := armeabi-v7a arm64-v8a x86 x86_64 )
- 【Android 应用开发】Android 开发环境下载地址 -- 百度网盘 adt-bundle android-studio sdk adt 下载
- android 回车键事件编程
- Android横竖屏切换及其相应布局载入问题
- 快速定位 Android APP 当前页面的三种方法(Activity / Fragment)
- IDEA & Android Studio换主题背景
- Android强制设置横屏或竖屏
- Progressive Web App是一个利用现代浏览器的能力来达到类似APP的用户体验的技术——不就是chrome OS吗?
- Android App封装 —— ViewBinding
- 在android的kotlin上用git提交项目时报错提示:Invalid authentication data. 404 Not Found - Not Found
- Android 10.0 系统开机自启动第三方app