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(); }

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

更多相关文章

  1. [转]android 修改ramdisk.img和init.rc && android启动后设置/da
  2. 【android】音乐播放器之service服务设计
  3. Android(安卓)二维码的扫码功能实现(一)
  4. 一起来开发Android的天气软件(一)——功能规格介绍
  5. Android无障碍服务三 创建辅助功能服务
  6. 个人简历制作——Android自动升级&个人“服务器”搭建
  7. Android编程之权限机制总结与常见权限不足问题分析
  8. Android键盘系统——改变按键功能(2)
  9. android app --- 快速接入云片网短信验证码功能

随机推荐

  1. Android中使用log4j输出log内容到sd卡
  2. Develop--Training(一)Getting Started
  3. AVD 简介
  4. android中wifi原理及流程分析(很经典)
  5. Android(安卓)webview与js 交换JSON对象
  6. Android提供了Animation
  7. android:padding和android:margin的区别
  8. android Intent机制详解
  9. Android(安卓)音频系统:从 AudioTrack 到
  10. 【转】Android背景选择器Selector详解