在程序开发过程当中,常遇到需要启动另一个应用程序的情况,比如在点击软件的一个按钮可以打开地图软件。
如果既有包名又有主类的名字,那就好 办了,
直接像下面就行:
[html]
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);
或者这样:
Intent intent = new Intent();
|
PackageManager packageManager = this .getPackageManager();
|
intent = packageManager.getLaunchIntentForPackage(packageName); |
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_CLEAR_TOP) ; |
this .startActivity(intent);
|
一般情况下我们是不知道包名和类名的,那怎么办呢?
其实手机安装的每一个应用的包名都是可以查到的,只要我们查到相关应用的包名,再通过它获得主类名,再按照上面的方法就可以了。
第一步:怎么获得包名?
PackageManager packageManager = context.getPackageManager();
packageManager.getInstalledApplications(0);
这就得到了手机上安装的所有应用的程序信息,当然包括包名,只需要查找自己需要的程序就可以了。
下面给出一个完整的方法,以包名为参数,获取主类名之名再启动应用的具体方法:
[java]
public static void openCLD(String packageName,Context context) {
PackageManager packageManager = context.getPackageManager();
PackageInfo pi = null; www.2cto.com
try {
pi = packageManager.getPackageInfo("cld.navi.mainframe", 0);
} catch (NameNotFoundException e) {
}
Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);
List<ResolveInfo> apps = packageManager.queryIntentActivities(resolveIntent, 0);
ResolveInfo ri = apps.iterator().next();
if (ri != null ) {
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);
context.startActivity(intent);
}
}
相关推荐
一个app启动另一个app,这个玩法挺火的嘛,有没有试过更新QQ到5.1版本,QQ的健康里面就可以添加其他app,实现从QQ跳转到其他app应用,这里模拟写了一个demo
Android在一个app中实现另一个app的自动安装,安装完成后自动打开(需Root),详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/77485561
Android中 一个应用启动另外一个应用一般有2种情况,被启动应用的包名已知和未知两种情况:情况一 ==》已知包名通常有两种方法、情况二 ==》未知包名。 Demo写的很详细。
一个简单案例,可获取android系统所有应用程序列表,实现点击列表中的某一项,打开相应的应用
Android应用程序可以实现开机时启动相关应用 如service等 Android系统在开机启动时会发出一个系统广播"android intent action BOOT COMPLETED" 在接收到这个广播就可以实现开机自启动功能 下面就是一个...
Android开机自启动小示例
在一个应用中启动另一个应用.将需要启动的应用放在当前应用的assets中,如果需要启动的应用已经被安装直接启动,否则要移动到sd卡中然后安装进入
Android 开机自启动应用, BOOT_COMPLETED
一款实用Android平台上的应用开机启动项管理
Android应用开机自动启动代码Demo,下载后直接放在Android Studio里运行就可以
android开机启动指定的应用 浏览器 Activity
大家最为熟悉的拨号盘或者短信应用,在第一次启动的时候,会有一定时间的白屏现象,其实,默认的情况下,android程序启动时,都会有一个黑屏或者白屏闪过的现象,在白屏或者黑屏过后才显示真正的应用界面。...
Android应用开机时自动启动 想要编写自启动应用的可以参考些源码!
Android_gif应用启动动画,动画播放完后跳往自定义的主菜单
在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用...
在Android平台上实现应用的自启动功能。部分山寨机修改系统,可能会出现问题,
Android脚本init.rc中写service,应用中启动该service
可以实现手机开机重启的时候自启动,程序简单易懂,有注释,是利用广播实现的
Android应用源码之Android中禁止某软件的安装_安装
如果需要在Android开机时自动启动应用程序,可以通过响应android.intent.action.BOOT_COMPLETED广播消息来实现, Android系统启动结束时,会发出 android.intent.action.BOOT_COMPLETED 消息