开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用。一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通过如下代码来启动:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);
但是更多的时候,我们一般都不知道目标应用程序的启动Activity的类名,而只知道包名,接下来就需要这么做了,我封装成了一个方法,如下所示:
private void doStartApplicationWithPackageName(String packagename) {
// 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
PackageInfo packageinfo = null;
try {
packageinfo = getPackageManager().getPackageInfo(packagename, 0);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
if (packageinfo == null) {
return;
}
// 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(packageinfo.packageName);
// 通过getPackageManager()的queryIntentActivities方法遍历
List<ResolveInfo> resolveinfoList = getPackageManager()
.queryIntentActivities(resolveIntent, 0);
ResolveInfo resolveinfo = resolveinfoList.iterator().next();
if (resolveinfo != null) {
// packagename = 参数packname
String packageName = resolveinfo.activityInfo.packageName;
// 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packagename.mainActivityname]
String className = resolveinfo.activityInfo.name;
// LAUNCHER Intent
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
// 设置ComponentName参数1:packagename参数2:MainActivity路径
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
着看所有apk的包名和类名,用于启动或关闭某个app
可以查看android手机上所有程序的包名、类名的一个小app
获取apk包名类名,将apk安装到手机或者模拟器可以获取当前app的包名类名
这是一个android工程,可导入eclipse直接编译运行,功能是显示出android设备上的所有程序以及它们完整包名,主类名,图标和名称。以列表形式显示,只需写一个打开activity的方法就可以打开系统中安装了的apk,基于此...
你可向一个设备或从一个设备中复制文件, 复制一个文件或目录到设备或模拟器上: adb push <source> <destination></destination></source> 如:adb push test.txt /tmp/test.txt 从设备或模拟器上复制一个...
查看app包名
每个 Android 应用程序都在 Dalvik VM 的一个实例中运行,这个实例驻留在一个由 Linux 内核管理的进程中,如下图所示。 图 2. Dalvik VM Android 应用程序由一个或多个组件组成: 活动 具有可视 UI 的应用...
AppIconNameChanger, 通过编程更改Android启动器应用程序 icon 和应用程序名的库 ! AppIconNameChanger以编程方式更改 Android 应用 启动器 icon 和应用程序名称 ! 请使用以下链接从这里下载演示 : 使用以下链接...
Android判断栈顶activity;打印当前最顶层的activity类名;采用服务后台运行获取当前activity类名;是一个demo App,使用Android studio工具打开,有需要的可以自行下载;
安卓类名称查看器 运行后,直接可查看到安卓软件的类名称,可直接通过adb操作某软件。
放一个layout xml文件到ZwrFile表的file name可以随便取 比如“main xml” Expand端删除所有代码 新建一个类 类名为上文所提到的(“com test bmob FirstView”) 继承自 ZwrExpandView 将实现的抽象方法的Layout...
3 创建一个新的Android工程 Project name(在计算机中存储工程的目录名): HelloWorld Package name(包名,请参考Java相关的概念): com.china.hello Activity name(UI界面窗口的类名,从Activity继承而来): Hello...
> Android启动任务调度框架,用于缩短app启动时间 快速开始 STEP0 引入依赖,使用gradle dependencies { implementation 'cn.hikyson.rocket:rocket-core:VERSION_NAME' } STEP1 定义某一个任务: public class ...
通过获取包名和类名, ok 如何通过代码以及包名卸载应用? ok 如何通过代码以及包名静默的卸载APP? ok 如何隐藏安装后的XposedInstall应用的图标? ok 如何使用Android Studio 打包改了代码的XposedInstall应用的Apk? ...
1,在交互规则里,js调用安卓,统一传一个action,作为标记,表明要执行的行动中的特定方法,然后传入参数,json格式的参数, 最后一个是回调方法。可以匿名实现回调方法。非常的方便。js调用安卓只需要一个方法,就...
基于 LabelViewHelper 实现的一个纯标签 View,可嵌套在 ViewGroup 中使用等 demo LabelImageView 基于 LabelViewHelper 实现的一个具备标签的 ImageView,可属性配置等 demo LabelLinearLayout 基于 ...
Sqlite 一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中 W3C 万维网联盟,创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。主要的工作是发展 Web 规范,...
tag是一个标识,可以是任意字符串,通常可以使用类名+方法名, 主要是用来在查看日志时提供一个筛选条件. 程序运行后 并不会在 ide的控制台内输出任何信息. 如果要后查看日志 请使用 adb logcat 关于adb的更多...
unity做的讯飞安卓语音评测,识别,合成的demo。目录结构:根目录为unity的项目路径,...debug.arr文件,删除压缩包中的lib/classes.jar文件,这样才能吧app-debug.arr文件导入到unity项目中,否则会类名冲突打包失败。
getAppPackageName : 获取 App 包名 getAppDetailsSettings: 获取 App 具体设置 getAppName : 获取 App 名称 getAppIcon : 获取 App 图标 getAppPath : 获取 App 路径 getAppVersionName : 获取 App 版本号 getApp...