引用:http://blog.sina.com.cn/s/blog_6cea217301012ac3.html

http://www.oschina.net/question/229726_36557#viewSource

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

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

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

下面是实现代码:

view source print ?
01 privatevoidopenApp(String packageName) {
02 PackageInfo pi = getPackageManager().getPackageInfo(packageName,0);
03
04 Intent resolveIntent =newIntent(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 =newIntent(Intent.ACTION_MAIN);
16 intent.addCategory(Intent.CATEGORY_LAUNCHER);
17
18 ComponentName cn =newComponentName(packageName, className);
19
20 intent.setComponent(cn);
21 startActivity(intent);
22 }
23 }

更多相关文章

  1. Android(安卓)NDK c调用java代码
  2. Android(安卓)全屏与沉浸式
  3. Android(安卓)MediaRecorder系统结构
  4. Android实现开机自启动无效问题
  5. 敏捷个人手机应用iOS和Android公开注册
  6. Android启动画面翻转
  7. Android(安卓)Studio 本地化配置gradle的buildToolsVersion和gra
  8. Android(安卓)ListView 效果美化
  9. Android(安卓)4.0: 旋转屏幕时禁止Activity重新加载

随机推荐

  1. 用android studio写一个简单的计算器(没有
  2. Android剪贴板
  3. Android 8.0 报错 android.os.FileUriExp
  4. 为什么在AndroidManifest.xml中Activity
  5. Android DrawerLayout实现抽屉效果实例代
  6. 编译android出错
  7. android实现截屏功能
  8. Android之SQLite学习
  9. android技术内幕心得
  10. wifi 通知栏上 选择程序时出现你的应用