Android 启动另一个App/apk中的Activity实现代码

发布时间 - 2026-01-11 00:47:22    点击率:

Android 启动另一个App/apk中的Activity实现代码

前言:

Android提供了在一个App中启动另一个App中的Activity的能力,这使我们的程序很容易就可以调用其他程序的功能,从而就丰富了我们App的功能。比如在微信中发送一个位置信息,对方可以点击这个位置信息启动腾讯地图并导航。这个场景在现实中作用很大,尤其是朋友在陌生的环境找不到对方时,这个功能简直就是救星。

本来想把本文的名字叫启动另一个进程中的Activity。因为每个App都会运行在自己的虚拟机中,每个虚拟机跑在一个进程中。但仔细一想,能够称为一个进程,前提是这个App必须要运行起来才行。而Android提供的能力,是不需要另一个App启动就可以将其特定的Activity启动起来的。

我们有至少两种办法达到启动另一个App中的Activity,

第一种用action启动,详情见我之前的文章《启动自己另一个程序的activity》。

第二种用intent设置className或component的办法启动

举例如下。新建两个项目ProjectA和ProjectB,用B中的MainActivity启动A的MainActivitity。关键代码如下:

ProjectB MainActivity

 public void OnStartActivityClicked(View view) {
  Intent intent = new Intent(Intent.ACTION_VIEW);

  String packageName = "com.lazytech.projecta";
  String className = "com.lazytech.projecta.MainActivity";
  intent.setClassName(packageName, className);

  //second method
//  intent.setComponent(new ComponentName(
//    "com.lazytech.projecta",
//    "com.lazytech.projecta.MainActivity"
//  ));
  Bundle bundle = new Bundle();
  bundle.putString("msg", "this message is from project B ");
  intent.putExtras(bundle);

  intent.putExtra("pid", android.os.Process.myPid());

  startActivityForResult(intent, 1);
//  startActivity(intent);
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  switch (requestCode) {
   case 1:
    if(resultCode == RESULT_OK) {
     textView.setText(data.getStringExtra("result"));
    }
    break;
  }
 }

ProjectA MainActivity

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  textView = (TextView)findViewById(R.id.text);

  Intent intent = getIntent();
  if(intent != null) {
   textView.setText(intent.getStringExtra("msg"));
  }
 }

 public void OnSendResult(View view) {
  Intent intent = new Intent();
  intent.putExtra("result","OK! from project a.");
  this.setResult(RESULT_OK,intent);
  this.finish();
 }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android 启动另一个App/apk中的Activity  # Android 启动其他APP  # 就可以  # 自己的  # 尤其是  # 不需要  # 找不到  # 两种  # 腾讯  # 将其  # 很容易  # 希望能  # 见我  # 才行  # 想把  # 谢谢大家  # 名字叫  # 如在  # 第二种  # 第一种  # 信中  # 这使我 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何正确下载安装西数主机建站助手?  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  专业商城网站制作公司有哪些,pi商城官网是哪个?  Laravel怎么使用artisan命令缓存配置和视图  Laravel如何生成URL和重定向?(路由助手函数)  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  5种Android数据存储方式汇总  香港服务器选型指南:免备案配置与高效建站方案解析  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  微信公众帐号开发教程之图文消息全攻略  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何快速辨别茅台真假?关键步骤解析  Laravel怎么在Blade中安全地输出原始HTML内容  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  如何安全更换建站之星模板并保留数据?  python中快速进行多个字符替换的方法小结  Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程  Android仿QQ列表左滑删除操作  PHP 500报错的快速解决方法  如何在Tomcat中配置并部署网站项目?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  如何批量查询域名的建站时间记录?  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  利用 Google AI 进行 YouTube 视频 SEO 描述优化  米侠浏览器网页背景异常怎么办 米侠显示修复  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  绝密ChatGPT指令:手把手教你生成HR无法拒绝的求职信  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  网站图片在线制作软件,怎么在图片上做链接?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  js实现获取鼠标当前的位置  网站建设要注意的标准 促进网站用户好感度!  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  iOS验证手机号的正则表达式  Android自定义listview布局实现上拉加载下拉刷新功能  如何快速搭建安全的FTP站点?  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  制作公司内部网站有哪些,内网如何建网站?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  如何在腾讯云服务器上快速搭建个人网站?  Laravel如何使用Service Container和依赖注入?(代码示例)  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】