在Android应用中自动跳转到开发市场
来源:互联网 发布:ipad 看图软件 编辑:程序博客网 时间:2024/05/17 07:49
公司有这样的一个需求,就是要在关于我们界面中要加个按钮,可以跳转到指定的应用市场,我们直接的应用中;其实这个需求很简单,只要我们知道你要跳转的应用的Uri就可以了;我下面就以//应用宝为例来看看下面的代码吧。。。
/** * 应用商店评分工具类 */public class MarketUtils { private static List<String> MarketPackages = new ArrayList<>(); static { MarketPackages.add("com.lenovo.leos.appstore"); MarketPackages.add("com.android.vending"); MarketPackages.add("com.xiaomi.market"); MarketPackages.add("com.qihoo.appstore"); MarketPackages.add("com.wandoujia.phoenix2"); MarketPackages.add("com.baidu.appsearch"); MarketPackages.add("com.tencent.android.qqdownloader"); } /** *过滤掉手机上没有安装的应用商店 */ public static List<ActivityInfo> queryInstalledMarketInfos(Context context) { List<ActivityInfo> infos = new ArrayList<>(); if (context == null) return infos; Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_APP_MARKET); PackageManager pm = context.getPackageManager(); List<ResolveInfo> resolveInfos = pm.queryIntentActivities(intent, 0); if (resolveInfos == null || infos.size() == 0) { return infos; } for (int i = 0; i < resolveInfos.size(); i++) { try { infos.add(resolveInfos.get(i).activityInfo); } catch (Exception e) { e.printStackTrace(); } } return infos; } public static List<ApplicationInfo> filterInstalledPkgs(Context context) { List<ApplicationInfo> infos = new ArrayList<>(); if (context == null || MarketPackages == null || MarketPackages.size() == 0) return infos; PackageManager pm = context.getPackageManager(); List<PackageInfo> installedPkgs = pm.getInstalledPackages(0); int li = installedPkgs.size(); int lj = MarketPackages.size(); for (int j = 0; j < lj; j++) { for (int i = 0; i < li; i++) { String installPkg = ""; String checkPkg = MarketPackages.get(j); try { installPkg = installedPkgs.get(i).applicationInfo.packageName; } catch (Exception e) { e.printStackTrace(); } if (TextUtils.isEmpty(installPkg)) continue; if (installPkg.equals(checkPkg)) { infos.add(installedPkgs.get(i).applicationInfo); break; } } } return infos; } /** * 获取已安装应用商店的包名列表 * * @param context * @return */ public static ArrayList<String> queryInstalledMarketPkgs(Context context) { ArrayList<String> pkgs = new ArrayList<String>(); if (context == null) return pkgs; Intent intent = new Intent(); intent.setAction("android.intent.action.MAIN"); intent.addCategory("android.intent.category.APP_MARKET"); PackageManager pm = context.getPackageManager(); List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0); if (infos == null || infos.size() == 0) return pkgs; int size = infos.size(); for (int i = 0; i < size; i++) { String pkgName = ""; try { ActivityInfo activityInfo = infos.get(i).activityInfo; pkgName = activityInfo.packageName; } catch (Exception e) { e.printStackTrace(); } if (!TextUtils.isEmpty(pkgName)) pkgs.add(pkgName); } return pkgs; } /** * 过滤出已经安装的包名集合 * * @param context * @param pkgs 待过滤包名集合 * @return 已安装的包名集合 */ public static ArrayList<String> filterInstalledPkgs(Context context, ArrayList<String> pkgs) { ArrayList<String> empty = new ArrayList<String>(); if (context == null || pkgs == null || pkgs.size() == 0) return empty; PackageManager pm = context.getPackageManager(); List<PackageInfo> installedPkgs = pm.getInstalledPackages(0); int li = installedPkgs.size(); int lj = pkgs.size(); for (int j = 0; j < lj; j++) { for (int i = 0; i < li; i++) { String installPkg = ""; String checkPkg = pkgs.get(j); try { installPkg = installedPkgs.get(i).applicationInfo.packageName; } catch (Exception e) { e.printStackTrace(); } if (TextUtils.isEmpty(installPkg)) continue; if (installPkg.equals(checkPkg)) { empty.add(installPkg); break; } } } return empty; } /** * 启动到app详情界面 * * @param appPkg * App的包名 * @param marketPkg * 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败 */ public static void launchAppDetail(Context context, String appPkg, String marketPkg) { try { if (TextUtils.isEmpty(appPkg)) return; Uri uri = Uri.parse("market://details?id=" + appPkg); Intent intent = new Intent(Intent.ACTION_VIEW, uri); if (!TextUtils.isEmpty(marketPkg)) intent.setPackage(marketPkg); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } catch (Exception e) { e.printStackTrace(); } }}
如果还有些bug,可以根据你自己的需求来做更改。
0 0
- 在Android应用中自动跳转到开发市场
- Android 应用中跳转到应用市场评分
- android应用跳转到市场评分功能
- Android跳转到应用市场进行评分
- Android App跳转到应用市场
- Android 跳转到应用市场详细信息页面
- Android App 评价/跳转到应用市场
- Android 跳转应用市场
- Android应用内评价/跳转到应用市场功能
- Android应用如何跳转到应用市场详情页面
- Android 在应用中跳转到另一个应用中的方法
- App跳转到应用市场
- android跳转到手机系统默认应用市场的方法
- Android -- 跳转应用市场评分
- Android 跳转应用市场评分
- 在android应用市场中直接定位到自己的应用
- 跳转到应用市场代码片段
- app跳转到应用市场打分
- GATTServApp_WriteCharCfg和GATTServApp_ProcesscccWriteReq 和GATTServApp_ProcessCharCfg的区别
- 小波分析个例应用
- Android:单元测试Junit的配置
- java 连接mysql数据库
- RecyclerView滑动距离计算
- 在Android应用中自动跳转到开发市场
- 真正的两张图片循环滚动
- 小波函数总结
- js--属性和方法(私有/公有)
- egret自定义事件
- javascript编译环境搭建
- 希尔排序
- Bundle Adjustment 原理推导
- wireshark安装问题