启动另一个app
(一) 通过包名、类名
开发有时需要在一个应用中启动另一个应用,比如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);
- }
- }
(二)通过action
(三)传参数: http://www.aboutit.cn/post/195
启动另一个app的更多相关文章
- Android项目实战(二十二):启动另一个APP or 重启本APP
一.启动另一个APP 目前公司项目需求,一个主APP,需要打开某些小APP,这些小APP是整合了Unity的,但是还是android程序(所有小APP的包名是已知的). 以前没做过,查询了一下实现方法 ...
- Android 一个app启动另一个app
最近,一个app启动另一个app,这个玩法挺火的嘛,有没有试过更新QQ到5.1版本,QQ的健康里面就可以添加其他app,实现从QQ跳转到其他app应用.这个挺好玩的,一下子带来了多少流量啊. 一.先来 ...
- ios 一个app启动另一个app
问题描述:需要从一个ios应用程序中,能启动另一个ios应用程序. 开发环境:xcode7.3.1 关键词:白名单(LSApplicationQueriesSchemes).注册自己的URL Demo ...
- Android在应用中依据包名启动另外一个APP
以下为TestIntentData工程 MainActivity如下: package cn.testintentdata; import java.util.List; import android ...
- Android启动另一个APP时,注意disable与enable的问题
在写游戏sdk时候遇到了一个需要在sdk中通过scheme来启动支付宝的免密支付功能,所以需要在设备中通过包名检查一下支付宝是否存在. 此时遇到了一个问题,在三星设备中可以将app给处于disable ...
- Android在一个APP中通过包名或类名启动另一个APP
开发有时需要在一个应用中启动另一个应用,比如Launcher加载所有的已安装的程序的列表,当点击图标时可以启动另一个应用.一般我们知道了另一个应用的包名和MainActivity的名字之后便可以直接通 ...
- Windows Phone 8 通过一个app启动另一个app
Winphone8 通过app启动第三方app需要被启动的app支持,具体操作步骤如下: 假设要通过PhoneApp2启动PhoneApp1 PhoneApp1端做的操作如下: 1.注册Protoco ...
- Android 中如何从一个App启动另外一个App(如启动支付界面、启动地图界面、应用商场下载App等场景)
假定两个App,分别是A和B,当A运行某个功能需要启动B,一种是启动B应用,一种直接进入B的某个Activity.搜了很多资料,没有一个完整的.下面就A--Android5.1.1.B--Androi ...
- Appium之启动第一个App
搭建appium自动化环境真是各种问题呀. 如何启动在真机上启动App? 执行操作:操作Android真机上打开手机淘宝app,并搜索“熊猫”. 脚本源码如下: from appium import ...
随机推荐
- Eclipse 不能build, pom文件上面有叉叉 解决办法
Error message: [html] view plaincopy execution not covered by lifecycle configuration: org.apache. ...
- [na]计算机网络性能指标(延迟/吞吐量/RTT等)
参考 计算机网络性能指标 计算机网络性能指标 带宽.速率.延迟.吞吐量.丢包率(无线验收标准一般-75dbm,del<100ms,丢包率3%) 带宽x延迟 决定着路上的数据的多少. 速率: 连接 ...
- 【Unity】7.5 移动设备输入
分类:Unity.C#.VS2015 创建日期:2016-04-21 一.简介 在iOS和Android系统中,操作都是通过触摸来完成的.Input类中对触摸操作的方法或变量如下图所示: 通过GetT ...
- 添加多个CCArmature
CCArmatureDataManager::sharedArmatureDataManager()-> addArmatureFileInfo("armature\\Cowboy0. ...
- 【Acm】算法之美—Crashing Balloon
题目概述:Crashing Balloon On every June 1st, the Children's Day, there will be a game named "crash ...
- Asp.Net正则获取链接地址
string html = “html代码”; Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?< ...
- EntityFramework安装和EF升级方法
例如:如何在vs2010上安装EntityFramework5.0? 首先,需要安装一个vs插件,名称为NuGet Package Manager,微软官方发布的,其作用就是为vs工程项目自动下载.安 ...
- 在java代码中,用xslt处理xml文件
http://blog.csdn.net/zhou_lei/article/details/2661735 ********************************************** ...
- csu1356 :判断一个环是否为奇数环
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1356 题意:给出一个起始点,一些边,有人从这个起始点开始随意走,问在某一个时候,它是否可以处于任意 ...
- easyui扩展
datagrid行内编辑时为datetimebox $.extend($.fn.datagrid.defaults.editors, { datetimebox: {// datetimebox就是你 ...