android 使用应用市场进行版本更新

作者: cnbzlj 发布时间: 2019-09-26 浏览: 69 次 编辑

今天,简单讲讲如何使用应用市场更新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怎么办?
继续:

  1. 先扫描手机内所有的应用市场
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.vendingGoogle Play
com.tencent.android.qqdownloader应用宝
com.qihoo.appstore360手机助手
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 使用应用市场进行版本更新就讲完了。

就这么简单。