在android应用程序中启动其他apk程序

时间:2022-11-11 19:55:39

Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。 
一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:

1 Intent intent = new Intent(Intent.ACTION_MAIN);
2 intent.addCategory(Intent.CATEGORY_LAUNCHER);          
3 ComponentName cn = new ComponentName(packageName, className);          
4 intent.setComponent(cn);
5 startActivity(intent);

但是更多的时候,我们一般都不知道应用程序的启动Activity的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。

下面是实现代码:

01 private void openApp(String packageName) {
02 PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);
03  
04 Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
05 resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
06 resolveIntent.setPackage(pi.packageName);
07  
08 List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);
09  
10 ResolveInfo ri = apps.iterator().next();
11 if (ri != null ) {
12 String packageName = ri.activityInfo.packageName;
13 String className = ri.activityInfo.name;
14  
15 Intent intent = new Intent(Intent.ACTION_MAIN);
16 intent.addCategory(Intent.CATEGORY_LAUNCHER);
17  
18 ComponentName cn = new ComponentName(packageName, className);
19  
20 intent.setComponent(cn);
21 startActivity(intent);
22 }
23 }

在android应用程序中启动其他apk程序的更多相关文章

  1. IOS在一个程序中启动另一个程序

    尽管iPhone不允许同时运行两个应用程序,我们可以从自己的应用程序中启动另一个应用程序,并且可以在应用程序之间共享数据.我们可以使用UIApplication类的openURL:方法从一个应用程序来 ...

  2. Android 在一个程序中启动另一个程序

    Android 开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用.一般我们知道了另一个应用的包名和MainActivity的名字 ...

  3. Android 在一个程序中启动另一个程序&lpar;包名,或者类名&rpar;

    http://hi.baidu.com/xiaofanqing/item/6fd724f7c5bb6dce531c26b7 Android 开发有时需要在一个应用中启动另一个应用,比如Launcher ...

  4. &lpar;转&rpar;从android一个apk中启动第三方apk应用

    从android一个apk中启动第三方apk应用 我们在开发中,经常遇到遇到在一个apk中要去运行另外一个apk,就像我们windows一样,搞一个快捷方式一样,那怎么实现呢? 问题的核心点在于我们要 ...

  5. android在ubuntu中编译为&period;apk资料

    android在ubuntu中编译为.apk文件 今天我在ubuntu环境之下将android程序编译为.apk文件,特将其过程写下来: 1. 在windows环境下使用MyEclipse编辑好and ...

  6. OpenGL程序无法启动此应用程序,因为计算机中丢失glut32&period;dll(转)&rpar;

    今天打开一个OpenGL源码,各种修改之后想要运行看一下效果,结果在我的开发环境下出现缺少相应的dll库: Windows7 64位+VS2010 提示:程序无法启动此应用程序,因为计算机中丢失glu ...

  7. vc&plus;&plus; 在程序中运行另一个程序的方法

    在vc++ 程序中运行另一个程序的方法有三个: WinExec(),ShellExcute()和CreateProcess() 三个SDK函数: WinExec,ShellExecute ,Creat ...

  8. 转:如何解决VC &quot&semi;应用程序无法启动&comma;因为应用程序的并行配置不正确 sxstrace&period;exe&quot&semi;问题

    如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题   引用链接 http://blog.csdn.net/pizi0475/artic ...

  9. WP8的新功能-通过一个程序来启动另一个程序

    Wp8对原来的WP7做了大量的优化...其中一个就包括Protocol Association,也就是通过uri来打开另外一个程序,这也就是说,我们可以做一个程序来启动另外一个程序了,如微信,QQ之类 ...

随机推荐

  1. tomcatPluginV321&period;zip

    下载地址:http://www.eclipsetotale.com/tomcatPlugin/tomcatPluginV321.zip 或者  http://files.cnblogs.com/fil ...

  2. android中的requestFocus标签

    <requestFocus />标签用于指定屏幕中的焦点View 用法:置于Views标签内部 ex: <EditText             android:id=" ...

  3. Element is not currently visible and so may not be interacted with错误

    用selenium定位时,碰到这种错误的原因: 此种问题的关键是在于用className和id都不唯一所以找不到对象 所以,碰到这种问题就换一种定位方式

  4. 在GridControl控件中使用SearchLookUpEdit构建数据快速输入

    较早之前,曾经介绍了一篇文章<使用DataGridView数据窗口控件,构建用户快速输入体验>,介绍了在传统DataGridView中嵌入一个数据窗口进行选择列表,从而实现数据快速录入的操 ...

  5. Android -- 获取汉字的首字母

    转换                                                                                             获取一个汉 ...

  6. C&num;request 请求响应

    /// <summary> /// 提交POST请求 /// </summary> /// <param name="url">提交地址< ...

  7. Java --Annotation学习心得体会及笔记

    相对于注释这种给程序员看的信息: 注解,就是给程序看的解释性的语言,其作用就相当于配置文件的存在.其存在的意义在于以下几点: 优点: 方便的使程序员看到相关项的关联位置及关联方式等信息. 缺点: 由于 ...

  8. 三角形(hdu1249)递推

    三角形 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...

  9. pdf文件去掉广告,水印,背景和删除密码方法收藏

    对于学习资料中,pdf文件中的出现的频繁的广告内容真的让人看了很烦,怎么删除呢,后来发现有一款工具foxitphantom可以直接删除,具体操作是,先用该软件打开,然后选择Edit->Heade ...

  10. 分分钟钟学会Python - 解释器安装

    1.解释器安装 1. 下载解释器 python 2.7.16 (2020年官方不在维护) python 3.6.8 (推荐) 2.安装 python 3.6.8 安装位置随意,自己能找到了就行. 安装 ...