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

  • 2022-07-18 12:43:01

android 启动另一个app/apk中的activity实现代码

前言:

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

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

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

第一种用action启动,详情见我之前的文章《》。

第二种用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();
 }

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

猜你喜欢