Android 启动另一个App/apk中的Activity实现代码
程序员文章站
2023-11-13 13:03:28
android 启动另一个app/apk中的activity实现代码
前言:
android提供了在一个app中启动另一个app中的activity的能力,这使我们的程...
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(); }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: javaSpring学习总结day_02