Android在应用内启动另一个应用程序apk的两种方式

Android开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。

知道了另一个应用的包名和Launcher Activity的名字之后可以直接通过如下代码来启动:

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

ComponentName cn = new ComponentName(packageName, className);

intent.setComponent(cn);

startActivity(intent);

只知道包名时,我们可以通过ResolveInfo类来取得启动Acitivty的类名:

PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);

Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);

resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);

resolveIntent.setPackage(pi.packageName);

Listapps = pm.queryIntentActivities(resolveIntent, 0);

ResolveInfo ri = apps.iterator().next();

if (ri != null ) {

String packageName = ri.activityInfo.packageName;

String className = ri.activityInfo.name;

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

ComponentName cn = new ComponentName(packageName, className);

intent.setComponent(cn);

startActivity(intent);

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Intent用于启动Activity, Service, 以及BroadcastReceiver三种组件, 同时还...
    枫羽望空阅读 1,054评论 0 7
  • 我把这个默认启动器起名为NewLauncher,它的功能是能够以列表的形式展现你设备上的可启动应用(可启动应用是指...
    Little丶Jerry阅读 3,697评论 0 1
  • 神经肌肉疾病 概述 通常将能够引发足部畸形的神经肌肉疾病分为两种主要类型:痉挛型和瘫痪型。 痉挛型由中枢神经系统的...
    云中瑞麟阅读 3,451评论 0 0
  • 腿脚抽筋几毛钱 首先声明本人不是医生。写些小小医疗知识,都是本人实用验证过的东西,信不信由你,反正用不了几个钱。 ...
    商水阅读 97评论 1 2
  • 这阵子离职找工作,你知道,人一旦空闲独处,若不够强大,总难免心里起起伏伏,生出一些空荡荡的烦忧。 尤其在不想起床、...
    刘小丸阅读 387评论 0 0