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

(View view) {Intent intent = new Intent(Intent.ACTION_VIEW);String packageName = “com.lazytech.projecta”;String className = “com.lazytech.projecta.MainActivity”;intent.setClassName(packageName, className);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);(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

(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”));}}(View view) {Intent intent = new Intent();intent.putExtra(“result”,”OK! from project a.”);this.setResult(RESULT_OK,intent);this.finish();}

就看你能不能战胜它。战胜了,你就是英雄,就是生活的强者。

Android实战技巧之二十八:启动另一个App/apk中的Activity

相关文章:

你感兴趣的文章:

标签云: