http://www.2cto.com/kf/201203/122910.html

Android SDK中有这样一个API:

public abstract Intent getLaunchIntentForPackage (String packageName)

如果packageName存在返回入口Intent, startActivity(Intent)可以启动应用,否则返回nullimport android.app.Activity;

下面有个小示例:

[java] view plain copy
  1. importandroid.content.Intent;
  2. importandroid.content.pm.PackageInfo;
  3. importandroid.content.pm.PackageManager;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. publicclassMainextendsActivity{
  7. /**Calledwhentheactivityisfirstcreated.*/
  8. @Override
  9. publicvoidonCreate(BundlesavedInstanceState){
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. PackageManagerpackageManager=getPackageManager();
  13. Intentintent=newIntent();
  14. intent=packageManager.getLaunchIntentForPackage("pkgName");
  15. if(intent==null){
  16. System.out.println("APPnotfound!");
  17. }
  18. startActivity(intent);
  19. }
  20. }

  1. //-----启动我们自身写的程序------------------
  2. mButton01.setOnClickListener(newButton.OnClickListener(){
  3. publicvoidonClick(Viewv){
  4. //-----核心部分-----前名一个参数是应用程序的包名,后一个是这个应用程序的主Activity名
  5. Intentintent=newIntent();
  6. intent.setComponent(newComponentName("com.droidnova.android.games.vortex",
  7. "com.droidnova.android.games.vortex..Vortex"));
  8. startActivity(intent);
  9. }
  10. });
  11. //-----启动系统自带的应用程序------------------
  12. mButton02.setOnClickListener(newButton.OnClickListener(){
  13. publicvoidonClick(Viewv){
  14. Intentintent=newIntent();
  15. intent.setComponent(newComponentName("com.android.calendar","com.android.calendar.LaunchActivity"));
  16. startActivity(intent);
  17. }
  18. });

//这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activity
ComponentName componetName = new ComponentName(
//这个是另外一个应用程序的包名
"com.poynt.weibo",
//这个参数是要启动的Activity
"com.poynt.weibo.ui.IndexActivity");

Android在一个应用中启动另一个应用的Activity

为 activity 添加 intent-filter 的定义。
通过测试发现,只要添加如下语句,activity就可以被正常调用:
<intent-filter>
<action android:name=""/>
</intent-filter>

相应的启动代码为:
Intent intent = new Intent();
intent.setClassName(<package name>, <class name>);
startActivity(intent);

Activity1隐式调用Activity2时需要在AndroidManifest.xml文件中配置Activity2的action和category,具体添加下面的代码到Activity2的定义中

<intent-filter>

<action android:name="myaction2"/>

<category android:name="android.intent.category.DEFAULT"/>

<category android:name="mycategory" />

</intent-filter>

接着同样使用intent来启动Activity,代码如下:

Intent intent = new Intent("myaction2");

intent.addCategory("myCategory");

startActivity(intent);

这样就可以启动Activity2

更多相关文章

  1. Android应用程序组件Content Provider的启动过程源代码分析(3)
  2. Android应用程序组件Content Provider的启动过程源代码分析(5)
  3. Android代码实现APK文件的安装与卸载
  4. android 9.0 startService启动Servcie的过程分析
  5. android 命令行执行java 的方式
  6. android studio 2.2 ndk jni 开发 调试 hello world
  7. Android、JUnit深入浅出(七)——总…
  8. Android网络连接判断与处理
  9. Android(安卓)快速选择联系人

随机推荐

  1. sql server建库、建表、建约束技巧
  2. sql server 2000 数据库自动备份设置方法
  3. sql server创建临时表的两种写法和删除临
  4. 如何优化SQL语句(全)
  5. sql server 2000中禁止创建表(权限设置方
  6. 为什么我们需要在SQL Server里更新锁
  7. 简单介绍SQL Server里的闩锁
  8. 简单介绍SQL Server中的自旋锁
  9. sqlserver数据库优化解析(图文剖析)
  10. 自增长键列统计信息的处理方法