概述
在开发App后期,一个肯定绕不过去功能:应用更新。无非就两种形式:
(1)服务端维护更新包,app后台下载最新包并安装;
(2)app上架各应用市场后,服务端只提供一个接口告知app当前最新app的版本号,更新信息等。app拉起本地应用市场或者是通过浏览器打开指定更新链接;
方式一应该是比较主流的方式,对于App和服务端相对来说都要麻烦一些,但是好处是用户体验更好。方式二则更加的省事。
本博客将介绍方式二如何实现,方式一将在以后的文章中介绍。
方式二更新的思路:
(1)遍历当前手机所有已安装包,获取所有应用包名;
(2)与主流应用市场的包名进行比对;
(3)如果有,则拉起应用市场App,跳转到对应app更新页面;如果没有,则拉起手机浏览器,跳转到指定app更新链接。
功能也比较简单,这里直接贴代码吧,LaunchAppStore.java:
public class LaunchAppStore {
/**
* 主流应用商店对应的包名
* 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 -----安智市场
*/
private static final String[] storePackageNames = {
"com.android.vending",
"com.tencent.android.qqdownloader",
"com.qihoo.appstore",
"com.baidu.appsearch",
"com.xiaomi.market",
"com.wandoujia.phoenix2",
"com.huawei.appmarket",
"com.taobao.appcenter",
"com.hiapk.marketpho",
"cn.goapk.market"
};
/**
* @param context 上下文
* @return 当前手机安装的应用市场包名,如果没有则为空字符串
*/
public static String isAvailableToStore(Context context) {
final PackageManager packageManager = context.getPackageManager();
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
List<String> installedPackageNames = new ArrayList<>();
for (PackageInfo packageInfo : packageInfos) {
installedPackageNames.add(packageInfo.packageName);
}
String targetStorePackageName = "";
for (int i = 0; i < storePackageNames.length; i++) {
if (installedPackageNames.contains(storePackageNames[i])) {
targetStorePackageName = storePackageNames[i];
break;
}
}
return targetStorePackageName;
}
/**
* 拉起应用市场或者是打开浏览器访问
* @param context 上下文
* @param targetStorePackageName 目标应用市场包名
* @param updateLink google pay应用市场更新链接
*/
public static void launchStoreWithCurrentApp(Context context, String targetStorePackageName, String updateLink) {
String appPackageName = context.getPackageName();
if (!targetStorePackageName.equals("")) {
Uri uri = Uri.parse("market://details?id=" + appPackageName);
Intent launchStoreIntent = new Intent(Intent.ACTION_VIEW, uri);
launchStoreIntent.setPackage(targetStorePackageName);
launchStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(launchStoreIntent);
} else {
Uri uri = Uri.parse(updateLink);
Intent launchBrowserIntent = new Intent(Intent.ACTION_VIEW, uri);
launchBrowserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(launchBrowserIntent);
}
}
}
最后
以上就是勤劳摩托为你收集整理的Android应用更新(一)的全部内容,希望文章能够帮你解决Android应用更新(一)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复