今天,简单讲讲如何使用应用市场更新app的版本。
最近,需要做一个功能,使app能自动进行版本检测和更新。之前,app都是使用应用市场提示用户更新的,但是这次希望app在打开时可以自动检测新的版本,然后进行版本更新。在网上查找了很多版本更新的资料,写出了设计文档。但是我的设计是让app在内部直接下载服务器的最新版本进行更新,而领导说必须使用应用市场进行更新,所以在网上查找资料,最终解决了问题。这里记录一下。
app跳转到应用市场上去更新,对开发者来说可以省很多的事。
直接看代码:
Intent intent=new Intent("android.intent.action.MAIN"); intent.addCategory("android.intent.category.APP_MARKET"); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
运行效果如下:
选择对应的可以启动应用市场。
可以在应用市场搜索相应的app,但是似乎不能满足我们的需求,能否直接跳转到app详情页面?如果该应用市场没有我们所需的app怎么办?
继续:
- 先扫描手机内所有的应用市场
Intent intent = new Intent(); intent.setAction("android.intent.action.MAIN"); intent.addCategory("android.intent.category.APP_MARKET"); PackageManager pm = this.getPackageManager(); List<ResolveInfo> infos = pm.queryIntentActivities(intent, 0); int size = infos.size(); for (int i = 0; i < size; i++) { ActivityInfo activityInfo = infos.get(i).activityInfo; String packageName = activityInfo.packageName; //获取应用市场的包名 }
主流应用商店对应的包名如下:
包名 | 商店 |
---|---|
com.android.vending | Google Play |
com.tencent.android.qqdownloader | 应用宝 |
com.qihoo.appstore | 360手机助手 |
com.baidu.appsearch | 百度手机助 |
com.xiaomi.market | 小米应用商店 |
com.wandoujia.phoenix2 | 豌豆荚 |
com.huawei.appmarket | 华为应用市场 |
com.taobao.appcenter | 淘宝手机助手 |
com.hiapk.marketpho | 安卓市场 |
cn.goapk.market | 安智市场 |
点击相应的市场跳转到app的详细页面
Intent intent = new Intent(Intent.ACTION_VIEW); Uri uri = Uri.parse("market://details?id=" + "com.cailaiwang.app");//app包名 intent.setData(uri); intent.setPackage("com.tencent.android.qqdownloader");//应用市场包名 startActivity(inent);
也可以封装成一个函数:
/** * 启动到应用商店app详情界面 * * @param appPkg 目标App的包名 * @param marketPkg 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败 */ public void launchAppDetail(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); startActivity(intent); } catch (Exception e) { e.printStackTrace(); } }
简单讲讲,其实很简单,就是调用intent.addCategory("android.intent.category.APP_MARKET")可以直接跳转到全部的应用市场,也可以使用launchAppDetail(String appPkg, String marketPkg)直接跳转到具体的app下载界面,只需要传入应用市场的包名和app的appId。这里需要注意一个问题,当跳转到具体的app界面时,需要判断手机是否安装了需要跳转的应用市场,如果没有安装,直接跳转回出现问题。所以跳转前需要判断手机是否安装了我们需要的应用市场,如果没有安装,需要提示用户安装,然后才能进行跳转。代码也很简单。
// 判断市场是否存在的方法 public static boolean isAvilible(Context context, String packageName) { final PackageManager packageManager = context.getPackageManager();// 获取packagemanager List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);// 获取所有已安装程序的包信息 List<String> pName = new ArrayList<String>();// 用于存储所有已安装程序的包名 // 从pinfo中将包名字逐一取出,压入pName list中 if (pinfo != null) { for (int i = 0; i < pinfo.size(); i++) { String pn = pinfo.get(i).packageName; pName.add(pn); } } return pName.contains(packageName);// 判断pName中是否有目标程序的包名,有TRUE,没有FALSE }
简单讲讲,其实就是先获取app所有安装的包名,然后判断是否包含我们需要的应用市场的包名。
android 使用应用市场进行版本更新就讲完了。
就这么简单。