启动另一个app

(一) 通过包名、类名

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

[java] view plaincopy

  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的类名,而只知道包名,接下来就需要这么做了,我封装成了一个方法,如下所示:

[java] view plaincopy

    1. private void doStartApplicationWithPackageName(String packagename) {
    2. // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
    3. PackageInfo packageinfo = null;
    4. try {
    5. packageinfo = getPackageManager().getPackageInfo(packagename, 0);
    6. } catch (NameNotFoundException e) {
    7. e.printStackTrace();
    8. }
    9. if (packageinfo == null) {
    10. return;
    11. }
    12. // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
    13. Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    14. resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    15. resolveIntent.setPackage(packageinfo.packageName);
    16. // 通过getPackageManager()的queryIntentActivities方法遍历
    17. List<ResolveInfo> resolveinfoList = getPackageManager()
    18. .queryIntentActivities(resolveIntent, 0);
    19. ResolveInfo resolveinfo = resolveinfoList.iterator().next();
    20. if (resolveinfo != null) {
    21. // packagename = 参数packname
    22. String packageName = resolveinfo.activityInfo.packageName;
    23. // 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packagename.mainActivityname]
    24. String className = resolveinfo.activityInfo.name;
    25. // LAUNCHER Intent
    26. Intent intent = new Intent(Intent.ACTION_MAIN);
    27. intent.addCategory(Intent.CATEGORY_LAUNCHER);
    28. // 设置ComponentName参数1:packagename参数2:MainActivity路径
    29. ComponentName cn = new ComponentName(packageName, className);
    30. intent.setComponent(cn);
    31. startActivity(intent);
    32. }
    33. }

(二)通过action

(三)传参数: http://www.aboutit.cn/post/195

时间: 2024-10-12 09:25:34

启动另一个app的相关文章

ios 一个app启动另一个app

问题描述:需要从一个ios应用程序中,能启动另一个ios应用程序. 开发环境:xcode7.3.1 关键词:白名单(LSApplicationQueriesSchemes).注册自己的URL Demo源代码链接:http://pan.baidu.com/s/1bo327sb 如何从一个app中,启动另一个app???本人ios菜鸟(工作需要,刚开始自学ios,现学现卖,哈哈)参考网上若干文章,实现了这个功能.目前,将demo分享出来. 1.注册自己的URL 新建一个工程MyAppOne,在inf

Android实战技巧之二十八:启动另一个App/apk中的Activity

Android提供了在一个App中启动另一个App中的Activity的能力,这使我们的程序很容易就可以调用其他程序的功能,从而就丰富了我们App的功能.比如在微信中发送一个位置信息,对方可以点击这个位置信息启动腾讯地图并导航.这个场景在现实中作用很大,尤其是朋友在陌生的环境找不到对方时,这个功能简直就是救星. 本来想把本文的名字叫启动另一个进程中的Activity,觉得这样才有逼格.因为每个App都会运行在自己的虚拟机中,每个虚拟机跑在一个进程中.但仔细一想,能够称为一个进程,前提是这个App

Android在一个APP中通过包名或类名启动另一个APP

开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用.一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动: Intent intent = new Intent(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName(packageNam

Android 一个app启动另一个app

[支付宝钱包],可以从支付宝直接跳转到[去啊],如果没有按照还提醒用户是否安装,有点炫酷哦,去啊的用户量一下增多了 第一个App中 // 通过包名获取要跳转的app,创建intent对象 Intent intent = activity().getPackageManager() .getLaunchIntentForPackage("com.zsl.download"); // 这里如果intent为空,就说名没有安装要跳转的应用嘛 if (intent != null) { //

android 从APP启动另一个APP

写下如下代码即可 import android.content.ComponentName; //引入 Intent mIntent = new Intent("android.intent.action.MAIN"); ComponentName comp = new ComponentName("你要启动app的包命,如:com.android.app", "你要启动app的首页,如:com.android.app.MainAcrivity"

Android 中如何从一个App启动另外一个App(如启动支付界面、启动地图界面、应用商场下载App等场景)

假定两个App,分别是A和B,当A运行某个功能需要启动B,一种是启动B应用,一种直接进入B的某个Activity.搜了很多资料,没有一个完整的.下面就A--Android5.1.1.B--Android7.1.1,实际华为平板Android5.1.1,EMUI3.1,分辨率1280*800进行测试.关键是Manifest文件设置及启动代码参数设置. 1.A启动整个B(代码来自:http://blog.csdn.net/mad1989/article/details/38090513) doSta

Android项目实战(十一):启动另一个APP

目前公司项目需求,一个主APP,需要打开某些小APP,这些小APP是整合了Unity的,但是还是android程序(所有小APP的包名是已知的). 以前没做过,查询了一下实现方法,其实还是挺简单的,测试也可以. 代码比较简单,直接贴上: try { PackageManager packageManager = getActivity().getPackageManager(); Intent intent=new Intent(); intent = packageManager.getLau

Android在一个app中启动另一个App

Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName("com.example.timer", "com.example.timer.MainActivity");//包名,类名 intent.setComponent(cn); startActivity(in

Android: 启动另外的APP及传递参数(转)

转载自:http://blog.csdn.net/iefreer/article/details/8812585 有时候需要从一个APP中启动另外一个APP,比如Twitter/微信等. 如果你不知道那个APP的Activity,但是知道包名(package name),那么可以使用如下的方法: [java] view plaincopy Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.packag