package com.demo.lib.common.util; /** * Created by weikou2015 on 2016/12/10. */ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Build; import android.text.TextUtils; import android.util.Log; import java.util.ArrayList; import java.util.List; /** * 应用商店评分工具类 */ public class MarketUtils { private static List MarketPackages = new ArrayList<>(); static { MarketPackages.add("com.lenovo.leos.appstore"); MarketPackages.add("com.android.vending"); MarketPackages.add("com.meizu.mstore"); MarketPackages.add("com.xiaomi.market"); MarketPackages.add("com.huawei.appmarket"); MarketPackages.add("com.qihoo.appstore"); MarketPackages.add("com.wandoujia.phoenix2"); MarketPackages.add("com.baidu.appsearch"); MarketPackages.add("com.bbk.appstore"); MarketPackages.add("com.yulong.android.coolmart"); MarketPackages.add("com.oppo.market"); MarketPackages.add("com.tencent.android.qqdownloader"); } /** * 过滤掉手机上没有安装的应用商店 */ public static List queryInstalledMarketInfos(Context context) { List 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 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(); } } Log.i("mResult", "没有应用商店的数量:" + infos.size()); return infos; } public static List filterInstalledPkgs(Context context, String packageName) { List infos = new ArrayList<>(); if (context == null || MarketPackages == null || MarketPackages.size() == 0) return infos; PackageManager pm = context.getPackageManager(); List 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; } } } String phoneName = Build.BRAND; if (infos.size() > 0) { } // launchAppDetail(context, packageName, infos.get(0).packageName); // Toast.makeText(context, "包名有:" + infos.get(0).packageName + "手机牌子为:" + phoneName, Toast.LENGTH_LONG).show(); //// + "/n" + infos.get(1).packageName+"/n" + infos.get(2).packageName+"/n" + infos.get(3).packageName,Toast.LENGTH_SHORT).show(); // Log.i("mResult", "包名有:" + "包名有:" + infos.get(0).packageName); //// + "----------" + infos.get(1).packageName+"----------" + infos.get(2).packageName+"---------" + infos.get(3).packageName); return infos; } /** * 获取已安装应用商店的包名列表 * * @param context * @return */ public static ArrayList queryInstalledMarketPkgs(Context context) { ArrayList pkgs = new ArrayList(); 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 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 filterInstalledPkgs(Context context, ArrayList pkgs) { ArrayList empty = new ArrayList(); if (context == null || pkgs == null || pkgs.size() == 0) return empty; PackageManager pm = context.getPackageManager(); List 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); SharedPreferences sp = context.getSharedPreferences("user", Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putBoolean("isReview", true); editor.commit(); } catch (Exception e) { e.printStackTrace(); } } /** * 启动到app详情界面 * * @param appPkg App的包名 * @param marketPkg 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败 */ public static void launchAppDetailtoDownload(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(); } } }