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;

下面有个小示例:

  1. import android.content.Intent;
  2. import android.content.pm.PackageInfo;
  3. import android.content.pm.PackageManager;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. public class Main extends Activity {
  7. /** Called when the activity is first created. */
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. PackageManager packageManager = getPackageManager();
  13. Intent intent=new Intent();
  14. intent =packageManager.getLaunchIntentForPackage("pkgName");
  15. if(intent==null){
  16. System.out.println("APP not found!");
  17. }
  18. startActivity(intent);
  19. }
  20. }
  1. //-----启动我们自身写的程序------------------
  2. mButton01.setOnClickListener(new Button.OnClickListener(){
  3. public void onClick(View v) {
  4. //-----核心部分----- 前名一个参数是应用程序的包名,后一个是这个应用程序的主Activity名
  5. Intent intent=new Intent();
  6. intent.setComponent(new ComponentName("com.droidnova.android.games.vortex",
  7. "com.droidnova.android.games.vortex..Vortex"));
  8. startActivity(intent);
  9. }
  10. });
  11. //-----启动系统自带的应用程序------------------
  12. mButton02.setOnClickListener(new Button.OnClickListener(){
  13. public void onClick(View v) {
  14. Intent intent=new Intent();
  15. intent.setComponent(new ComponentName("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

android启动另一应用的更多相关文章

  1. android 启动模式介绍

    Android启动模式 (1)Task:与Android系统是个多任务的系统中的任务是不同的.后者更倾向于多进程和多线程来说的,而这里的任务与application(应用程序)和activity(活动 ...

  2. 深入浅出 - Android系统移植与平台开发(四)- Android启动流程

    作者:唐老师,华清远见嵌入式学院讲师. 一.Android init进程启动 还是从Linux的启动开始吧.Linux被bootloader加载到了内存之后,开始运行,在初始化完 Linux运行环境之 ...

  3. 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速

    作者:唐老师,华清远见嵌入式学院讲师. Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速度越来越快,但是随着新 版本的出现,其启动速度一直都比较慢,当然,作为程序员,我们 ...

  4. 解决android 启动白屏问题

    Android 启动APP时黑屏白屏的三个解决方案 http://www.cnblogs.com/liqw/p/4263418.html android:windowSoftInputMode属性使用 ...

  5. Android 启动过程简析

    首先我们先来看android构架图: android系统是构建在linux系统上面的. 所以android设备启动经历3个过程. Boot Loader,Linux Kernel & Andr ...

  6. Android 启动模拟器是出现“Failed to allocate memory: 8”错误提示的原因及解决办法

    某天,Android 启动模拟器是出现“Failed to allocate memory: 8”错误,模拟器无法启动,如下图: 原因:设置了不正确AVD显示屏模式,4.0版默认的模式为WVGA800 ...

  7. 我的Android最佳实践之—— Android启动画面的实现方法

    本文实例讲述了Android启动画面的实现方法.分享给大家供大家参考.具体分析如下: 在应用程序中经常用到启动画面,会启动一个后台线程为主程序的运行准备资源.Android要实现启动画面可以这样做: ...

  8. Android 核心分析 之八Android 启动过程详解

    Android 启动过程详解 Android从Linux系统启动有4个步骤: (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) ...

  9. Android启动过程以及各个镜像的关系

    Android启动过程 Android在启动的时候,会由UBOOT传入一个init参数,这个init参数指定了开机的时候第一个运行的程序,默认就是init程序,这个程序在ramdisk.img中.可以 ...

  10. android130 android启动

    Android的编译环境只支持Linux和Mac OS,google推荐使用64位操作系统, ### android启动 > #### 当引导程序启动Linux内核后,会加载各种驱动和数据结构, ...

随机推荐

  1. java面试之String源码中equals具体实现

    废话不多说,直接看代码,注释已经写在上面了: public boolean equals(Object anObject) { if (this == anObject) {//比较两个对象的地址 r ...

  2. bzoj 3544 [ONTAK2010]Creative Accounting 贪心

    Description 给定一个长度为N的数组a和M,求一个区间[l,r],使得(\sum_{i=l}^{r}{a_i}) mod M的值最大,求出这个值,注意这里的mod是数学上的mod Input ...

  3. python:print含有中文的list

    Python 的 List 如果有中文的话, 会印出 \xe4\xb8... 等等的编码(如下所示), 要如何印出中文呢? >>> a = ['中文', 'ab']>>& ...

  4. APUE 学习笔记(三) 文件和目录

    1. 文件类型 文件类型信息包含在 struct stat 里的 st_mode 成员 (1)普通文件,unix内核并不区分文本文件和二进制文件 (2)目录文件,这种文件包含了其他文件的名字以及指向这 ...

  5. 2018.8.6 Noip2018模拟测试赛(十九)

    日期: 八月六号  总分: 300分  难度: 提高 ~ 省选    得分: 10分(MMP) 题目目录: T1:Tree T2:异或运算 T3:Tree Restoring 赛后反思: Emmmmm ...

  6. iis 配置 aspnet起始页

    起始页配置:在default document上面加上路径就可以了,例如 /home/kickoffjob asp.net 关于起始页的一般设置: 1: 在web.config中,加入form认证: ...

  7. 标准C程序设计七---42

    Linux应用             编程深入            语言编程 标准C程序设计七---经典C11程序设计    以下内容为阅读:    <标准C程序设计>(第7版) 作者 ...

  8. lunix cat tail more等用法

    cat主要有三大功能:  1.一次显示整个文件.  $ cat filename  2.从键盘创建一个文件.  $ cat > filename  只能创建新文件,不能编辑已有文件.  3.将几 ...

  9. Object 转 String

    做项目中 : map 为Map<String,Object> a.setmoney(new BigDecimal((String)map.get("money"))); ...

  10. jenkins配置Maven的私有仓库Nexus

    1.什么是nexus? Neux:MAVEN的私有仓库; 如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库 ...