Android 一个应用启动另一个应用的说明

我们Android 开发有时需要在一个应用中启动另一个应用,比如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的类名,而只知道包名,我们可以通过ResolveInfo类来取得启动Acitivty的类名。

下面是实现代码:

private void openApp(String packageName) {

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

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

resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);

resolveIntent.setPackage(pi.packageName);

List<ResolveInfo> apps = 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 intent = new Intent(Intent.ACTION_MAIN);

ComponentName componentName = new ComponentName("com.lenovo.gemini.OOBE", "com.lenovo.gemini.OOBE.Settings");

intent.setComponent(componentName);

startActivity(intent);

}

在代码中"com.lenovo.gemini.OOBE" 是要打开的程序包名," com.lenovo.gemini.OOBE.Settings"是要打开的Activity。

例子:程序中调用浏览器,代码如下:

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://163.com"));

startActivity(intent);

时间: 2024-12-19 19:21:34

Android 一个应用启动另一个应用的说明的相关文章

Android 安装和启动另外一个应用

有时候一个应用需要启动另外一个应用来完成操作,比如在某些应用中打开闹钟,相机,日历等等. 启动或安装相应的应用的方法: Step1:判断是否安装目标应用.只要知道目标应用的安装包名就可以通过判断"/data/data/packagename"是否存在来实现. [java] view plaincopy 01./** 02. * 判断是否安装目标应用 03. * @param packageName 目标应用安装后的包名 04. * @return 是否已安装目标应用 05. * @au

Android从一个应用启动另一个主界面隐藏图标的应用

用a.apk启动b.apk,并且b的图标是在手机主界面上看不到的. 一.新建a,b两个android项目(新建helloworld项目相似),在a项目中增加点击事件(启动按钮来启动b应用).      二.在b应用中修改b manifest.xml中<intent-filter>...</intent-filter>的内容就可以隐藏b应用的图标了. <?xml version="1.0" encoding="utf-8"?> &l

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 通过广播启动另一个应用的Activity

需求:现在有应用A和应用B,我需要在A应用中启动B应用中的某个Activity 实现:A应用中的Activity发送广播,关键代码如下: String broadcastIntent = "com.example.android.notepad.NotesList";//自己自定义       Intent intent = new Intent(broadcastIntent);       this.sendBroadcast(intent); B应用中需要一个BroadcastR

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,创建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"

关于一个普通程序启动另外一个程序的命令pm install

这里会采用两个开源项目的文件 这是对安装程序的简单的测试和demo package com.example.demoinstall; 用于判断是否为系统的运用 import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; import android.content.Context; import android.content.Intent; import android.cont

Android应用中如何启动另一个应用

Android中 一个应用启动另外一个应用一般有2种情况, 被启动应用的包名已知 和  未知两种情况: 1  被启动应用的包名已知: /**启动另外应用的代码,其中被启动的应用的包名为packageName, 应用的入口为packageName.MainActivity, 此方法的2个应用的AndroidManifest.xml文件都不需要修改 **/ Intent intent = new Intent(); intent.setComponent(new ComponentName("pac