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的详情页面.让用户 下载 或 评论. 实现: /** * ...
随机推荐
- Spring3:spring的事务操作
三.事务操作 1.导包 2. jdbc模板与开源连接池(DBCP与C3P0) 2.1DBCP 2.2C3P0 :: 2.3.抽取配置到属性文件 定义一个属性文件 在Spring的配置文件中引入属 ...
- Python【day 18】面向对象-类和类的关系
一.昨日内容回顾 成员 1.变量 1.成员变量--最常见 1.写法: 变量前面加了self就是成员变量 这里的self表示当前对象 一般是在构造方法中定义 2.调用: 对象.成员变量 3.作用: 可以 ...
- 怎样使用element-starter快速搭建ElementUI项目
场景 为了能快速搭建起一个ElementUI项目,我们可以使用element-starter这个模板进行快速搭建. element-starter的Github https://github.com/ ...
- C#中在多个地方调用同一个触发器从而触发同一个自定义委托的事件
场景 在Winfom中可以在页面上多个按钮或者右键的点击事件中触发同一个自定义的委托事件. 实现 在位置一按钮点击事件中触发 string parentPath = System.IO.Directo ...
- SSM框架之Spring(4)AOP
Spring(4)AOP 1.AOP概述 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种 ...
- HTTP中的Accept-Encoding、Content-Encoding、Transfer-Encoding、Content-Type
Accept-Encoding和Content-Encoding Accept-Encoding和Content-Encoding是HTTP中用来对采用何种压缩格式传输正文进行协定的一对header. ...
- Vue组件化开发
Vue的组件化 组件化是Vue的精髓,Vue就是由一个一个的组件构成的.Vue的组件化设计到的内容又非常多,当在面试时,被问到:谈一下你对Vue组件化的理解.这时候又有可能无从下手,因此在这里阐释一下 ...
- 20个常用的JavaScript字符串方法
摘要: 玩转JS字符串. 原文:JS 前20个常用字符串方法及使用方式 译者:前端小智 Fundebug经授权转载,版权归原作者所有. 本文主要介绍一些最常用的JS字符串函数. 1. charAt(x ...
- Invoke 与 BeginInvoke的区别
引用文章路径:https://www.cnblogs.com/lsgsanxiao/p/5523282.html invoke和begininvoke 区别 一直对invoke和begininvoke ...
- TeamyinyinFish-凡事遇则立
小组github地址: https://github.com/TeamyinyinFish 1.项目的总结反思 阿尔法迭代的时候我们只是理想的随意的选择了一个项目并且认为非常简单. 在第二轮迭代的时候 ...