1.概述
在实际开发的过程中,我们的产品可能不只一个Apk,即包含两个或两个以上的Apk,或者我们根据需要在特定情境下启动另外一个已安装的Apk,这个Apk可以是系统自带的或者普通的Apk。下面就介绍一下如何从当前Apk启动另外一个Apk。
2.实例代码
package com.example.demo;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
/**
* Description: 测从当前Apk启动其它Apk实例
*
* @author danDingCongRong
* @Version 1.0.0
* @Created at 2014-8-10 23:14:19
* @Modified by [作者] on [修改日期]
*/
public class TestLauncherOtherApkActivity extends Activity {
private Button btnLauncherNormalApk;
private Button btnLauncherSystemApk;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
btnLauncherNormalApk = (Button) findViewById(R.id.btnLauncherNormalApk);
btnLauncherSystemApk = (Button) findViewById(R.id.btnLauncherSystemApk);
btnLauncherNormalApk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 启动自己写的一个Apk
Intent intent = new Intent();
// ComponentName有多个构造函数,这里使用的构造函数要求第一个参数是要启动的Apk的PackageName,
// 第二个参数是要启动的Apk的启动Activity的名字,其它构造函数可自己查阅
ComponentName componentName = new ComponentName(
"com.example.qq",
"com.example.qq.activity.main.SplashActivity");
intent.setComponent(componentName);
startActivity(intent);
}
});
btnLauncherSystemApk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 启动系统自动的日历Apk
ComponentName componentName = new ComponentName(
"com.android.calendar",
"com.android.calendar.LaunchActivity");
Intent intent = new Intent();
intent.setComponent(componentName);
startActivity(intent);
}
});
}
}
3.备注
虽然启动的是启动的另外一个Apk,但是当从这个Apk返回时,仍然回到启动它的页面(如果显示的销毁它)。