Android 遍历手机应用,跳转应用市场详情页面
首先遍历手机内应用,找到需要的应用包名:
/**
* 遍历手机内应用包名
* @param context
*/
public static void loadApps(Context context) {
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> apps = context.getPackageManager().queryIntentActivities(intent, );
//for循环遍历ResolveInfo对象获取包名和类名
for (int i = ; i < apps.size(); i++) {
ResolveInfo info = apps.get(i);
String packageName = info.activityInfo.packageName;
CharSequence cls = info.activityInfo.name;
CharSequence name = info.activityInfo.loadLabel(context.getPackageManager());
Log.e("wgh!!!!!", name + "----" + packageName + "----" + cls);
}
}
对包名进行应用市场详情页面跳转:
/**
* 启动到app详情界面
*
* @param appPkg
* App的包名
* @param marketPkg
* 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败
*/
public static void launchAppDetail(Context context,String appPkg, String marketPkg) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=" + appPkg));
String[] keys = getKeys(context);
if (keys != null) {
intent.setClassName(keys[], keys[]);
}
//修复某些老手机会因为找不到任何市场而报错
if (isIntentAvailable(context, intent)) {
context.startActivity(intent);
} else {
ToastUtil.showToast("应用市场不存在");
}
} private static String[] getKeys(Context context) {
String[] keys = new String[];
if (isPackageExist(context, PACKAGE_MI_MARKET)) {
keys[] = PACKAGE_MI_MARKET;
keys[] = MI_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_VIVO_MARKET)) {
keys[] = PACKAGE_VIVO_MARKET;
keys[] = VIVO_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_OPPO_MARKET)) {
keys[] = PACKAGE_OPPO_MARKET;
keys[] = OPPO_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_HUAWEI_MARKET)) {
keys[] = PACKAGE_HUAWEI_MARKET;
keys[] = HUAWEI_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_ZTE_MARKET)) {
keys[] = PACKAGE_ZTE_MARKET;
keys[] = ZTE_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_COOL_MARKET)) {
keys[] = PACKAGE_COOL_MARKET;
keys[] = COOL_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_360_MARKET)) {
keys[] = PACKAGE_360_MARKET;
keys[] = PACKAGE_360_PAGE;
} else if (isPackageExist(context, PACKAGE_MEIZU_MARKET)) {
keys[] = PACKAGE_MEIZU_MARKET;
keys[] = MEIZU_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_TENCENT_MARKET)) {
keys[] = PACKAGE_TENCENT_MARKET;
keys[] = TENCENT_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_ALI_MARKET)) {
keys[] = PACKAGE_ALI_MARKET;
keys[] = ALI_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_WANDOUJIA_MARKET)) {
keys[] = PACKAGE_WANDOUJIA_MARKET;
keys[] = WANDOUJIA_MARKET_PAGE;
} else if (isPackageExist(context, PACKAGE_UCWEB_MARKET)) {
keys[] = PACKAGE_UCWEB_MARKET;
keys[] = UCWEB_MARKET_PAGE;
}
if (TextUtils.isEmpty(keys[])) {
return null;
} else {
return keys;
}
}
/**
* @param context
* @param packageName
* @return
* @Title isPackageExist
* @Description .判断package是否存在
* @date 2013年12月31日 上午9:49:59
*/
public static boolean isPackageExist(Context context, String packageName) {
PackageManager manager = context.getPackageManager();
Intent intent = new Intent().setPackage(packageName);
List<ResolveInfo> infos = manager.queryIntentActivities(intent, PackageManager.GET_INTENT_FILTERS);
if (infos == null || infos.size() < ) {
return false;
} else {
return true;
}
}
/**
* 检测 响应某个Intent的Activity 是否存在
* @param context
* @param intent
* @return
*/
@SuppressLint("WrongConstant")
public static boolean isIntentAvailable(Context context, Intent intent) {
final PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> list = packageManager.queryIntentActivities(intent,
PackageManager.GET_ACTIVITIES);
return list.size() > ;
}
应用市场包名:
//小米应用商店
public static final String PACKAGE_MI_MARKET = "com.xiaomi.market";
public static final String MI_MARKET_PAGE = "com.xiaomi.market.ui.AppDetailActivity";
//魅族应用商店
public static final String PACKAGE_MEIZU_MARKET = "com.meizu.mstore";
public static final String MEIZU_MARKET_PAGE = "com.meizu.flyme.appcenter.activitys.AppMainActivity";
//VIVO应用商店
public static final String PACKAGE_VIVO_MARKET = "com.bbk.appstore";
public static final String VIVO_MARKET_PAGE = "com.bbk.appstore.ui.AppStoreTabActivity";
//OPPO应用商店
public static final String PACKAGE_OPPO_MARKET = "com.oppo.market";
public static final String OPPO_MARKET_PAGE = "a.a.a.aoz";
//华为应用商店
public static final String PACKAGE_HUAWEI_MARKET = "com.huawei.appmarket";
public static final String HUAWEI_MARKET_PAGE = "com.huawei.appmarket.service.externalapi.view.ThirdApiActivity";
//ZTE应用商店
public static final String PACKAGE_ZTE_MARKET = "zte.com.market";
public static final String ZTE_MARKET_PAGE = "zte.com.market.view.zte.drain.ZtDrainTrafficActivity";
//360手机助手
public static final String PACKAGE_360_MARKET = "com.qihoo.appstore";
public static final String PACKAGE_360_PAGE = "com.qihoo.appstore.distribute.SearchDistributionActivity";
//酷市场 -- 酷安网
public static final String PACKAGE_COOL_MARKET = "com.coolapk.market";
public static final String COOL_MARKET_PAGE = "com.coolapk.market.activity.AppViewActivity";
//应用宝
public static final String PACKAGE_TENCENT_MARKET = "com.tencent.android.qqdownloader";
public static final String TENCENT_MARKET_PAGE = "com.tencent.pangu.link.LinkProxyActivity";
//PP助手
public static final String PACKAGE_ALI_MARKET = "com.pp.assistant";
public static final String ALI_MARKET_PAGE = "com.pp.assistant.activity.MainActivity";
//豌豆荚
public static final String PACKAGE_WANDOUJIA_MARKET = "com.wandoujia.phoenix2";
public static final String WANDOUJIA_MARKET_PAGE = "com.pp.assistant.activity.PPMainActivity";
//UCWEB
public static final String PACKAGE_UCWEB_MARKET = "com.UCMobile";
public static final String UCWEB_MARKET_PAGE = "com.pp.assistant.activity.PPMainActivity";
Android 遍历手机应用,跳转应用市场详情页面的更多相关文章
- Android应用如何跳转到应用市场详情页面
Android应用开发过程中,可能会有需求,比如:推广时跳转到应用市场下载应用,跳转到应用市场给自己的应用打分,跳转到应用市场更新自己的应用.那如何跳转到应用市场呢?可能跳转的方法大家都是知道的,方法 ...
- 【转】Android应用如何跳转到应用市场详情页面
Android应用开发过程中,可能会有需求,比如:推广时跳转到应用市场下载应用,跳转到应用市场给自己的应用打分,跳转到应用市场更新自己的应用.那如何跳转到应用市场呢? 可能跳转的方法大家都是知道的,方 ...
- 如何绑定android点击事件--跳转到另一个页面并实现关闭功能?
一.点击按钮跳转到另一个页面. eg:实现从一个页面点击跳转到另一个页面 1.首先在一个布局文件(.XML)中绘画了一个跳转按钮(id为btn1): <Button androi ...
- Android 应用内直接跳转酷市场
不确定酷市场后期是否还会该包名或者路径,目前的7.9 版本测试通过. private void gotoCoolapkMarket() { try { Intent intent = new Inte ...
- android 6.0+ 动态权限 拒绝不再询问后跳转设置应用详情页面
android 6.0+ 的权限 需要动态申请 这里的权限针对的是 敏感权限: SMS(短信) SEND_SMS RECEIVE_SMS READ_SMS RECEIVE_WAP_PUSH RECEI ...
- Android中当前Activity跳转到当前Activity页面
步骤:先关闭自己,在跳转 case R.id.btn_copy:// 复制 Toast.makeText(mContext, "正在复制", Toast.LENGTH_SHORT) ...
- JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面
JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html function is_weixin() { v ...
- Android需求之点击跳转至市场评价
相信大家都看过APP上有一个选项"喜欢此APP?还希望您评价一下吧!",然后点击弹出选择框让你选择一个市场如: 安智市场,百度应用,豌豆荚-.然后选择其中一个后就跳转至此市场你的A ...
- Android跳转到应用商店的APP详情页面,以及 Google GMS 各个apk的包
转自:http://www.jianshu.com/p/a4a806567368 需求: 从App内部点击按钮或链接,跳转到应用商店的某个APP的详情页面.让用户 下载 或 评论. 实现: /** * ...
随机推荐
- SpringBoot+MyBatisPlus整合时提示:Invalid bound statement(not found):**.dao.UserDao.queryById
场景 在使用SpringBoot+MyBatisPlus搭建后台启动项目时,使用EasyCode自动生成代码. 在访问后台接口时提示: Invilid bound statement (not fou ...
- 037.[转] springboot 配置多个数据源
1.在application.properties文件 配置两个数据源 #默认使用 tomcat-jdbc spring.datasource.type=org.apache.tomcat.jdbc. ...
- jmeter控制器(四)
交替控制器: 交替控制器主要是让控制器里面的请求顺序执行,如下图设置了审批管理循环3次,那么第一次运行就执行了请假模块,第二次运行执行了请假模块1,第二次执行了请加模块2,依顺序每一个请加模块只执行一 ...
- sql客户端工具Navicat_Premiun12中文破解版
Navicat Premium 是一套数据库开发工具,让你从单一应用程序中同时连接 MySQL.MariaDB.MongoDB.SQL Server.Oracle.PostgreSQL 和 SQLit ...
- Mybatis整合Redis实现二级缓存
Mybatis集成ehcache . 为什么需要缓存 拉高程序的性能 . 什么样的数据需要缓存 很少被修改或根本不改的数据 业务场景比如:耗时较高的统计分析sql.电话账单查询sql等 . ehcac ...
- Git 提交代码到远程仓库
Git 命令 一.Git如何把本地代码推送到远程仓库 1. 拉取指定分支代码 git clone -b dev https://github.com/crazyfzw/RecycleViewWithH ...
- 7. java 数组概念
一.数组概念 数组:是一种容器,可以同时存放多个数据值: 特点:数组是一种引用类型:数组中多个数据,类型必须统一:数组的长度在程序运行期间不可改变: 二.数组初始化 1. 动态初始化(指定长度 ...
- 2019面向对象程序设计(Java) 第16周学习指导及要求
2019面向对象程序设计(Java)第16周学习指导及要求 (2019.12.13-2019.12.16) 学习目标 (1) 掌握Java应用程序的打包操作: (2) 掌握线程概念: (3) 掌握线程 ...
- ACWING 95 费解的开关 解题记录
你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形.每一个灯都有一个开关,游戏者可以改变它的状态.每一步,游戏者可以改变某一个灯的状态.游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也 ...
- 3. 语法"陷阱"
1. C运算符优先级 运算符(优先级从高到低) 结合律 ++(后置).--(后置).()(函数调用).[].{}.(复合字面量).. .-> 从左往右 ++(前置).--(前置).-.+.~.! ...