概述
应用内更新
这篇文章已经写了成熟的方案
https://juejin.im/post/6882191830700523527
应用内提示
进入到首页以后,我们去请求服务器的关于App的接口,请求到App的在商店的版本号,如果商店版本号 >当前App的版本号,那么就提示用户,用户点击确定以后,然后跳转到对应的商店去更新。
有什么优点
减少了用户更新App的成本,增加了用户更新App的几率。
方案实施
思路
1、首先判断用户的品牌型号,比如华为。
2、根据设备品牌去跳转不同的应用商店,比如华为就去跳转华为的应用市场。
代码实现
package com.example.jumpmarket;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
import java.util.List;
public class MainActivity extends AppCompatActivity {
// 跳转到应用宝的网页版地址
private final static String WEB_YINGYONGBAO_MARKET_URL = "http://zhushou.360.cn/detail/index/soft_id/839306?recrefer=SE_D_%E6%B5%B7%E5%BA%95%E6%8D%9E";
private final static String MARKET_PKG_NAME_MI = "com.xiaomi.market";
private final static String MARKET_PKG_NAME_VIVO = "com.bbk.appstore";
private final static String MARKET_PKG_NAME_OPPO = "com.oppo.market";
private final static String MARKET_PKG_NAME_YINGYONGBAO = "com.tencent.android.qqdownloader";
private final static String MARKET_PKG_NAME_HUAWEI = "com.huawei.appmarket";
private final static String MARKET_PKG_NAME_MEIZU = "com.meizu.mstore";
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
goToAppMarket(MainActivity.this);
}
});
}
/**
* 跳转到渠道对应的市场,如果没有该市场,就跳转到应用宝(App或者网页版)
* @param context
*/
public void goToAppMarket(Context context) {
try {
// 通过设备品牌获取包名
String pkgName = "";
String deviceBrand = SystemUtil.getDeviceBrand().toUpperCase();
if ("HUAWEI".equals(deviceBrand) || "HONOR".equals(deviceBrand)) {
pkgName = MARKET_PKG_NAME_HUAWEI;
} else if ("OPPO".equals(deviceBrand)) {
pkgName = MARKET_PKG_NAME_OPPO;
} else if ("VIVO".equals(deviceBrand)) {
pkgName = MARKET_PKG_NAME_VIVO;
} else if ("XIAOMI".equals(deviceBrand) || "REDMI".equals(deviceBrand)) {
pkgName = MARKET_PKG_NAME_MI;
} else if ("MEIZU".equals(deviceBrand)) {
pkgName = MARKET_PKG_NAME_MEIZU;
} else {
pkgName = MARKET_PKG_NAME_YINGYONGBAO;
}
//查询符合条件的页面
Uri uri = Uri.parse("market://details?id=" + "com.haidilao");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PackageManager pm = context.getPackageManager();
List<ResolveInfo> resInfo = pm.queryIntentActivities(intent, 0);
// 筛选指定包名的市场intent
if (resInfo.size() > 0) {
for (int i = 0; i < resInfo.size(); i++) {
ResolveInfo resolveInfo = resInfo.get(i);
String packageName = resolveInfo.activityInfo.packageName;
if (packageName.toLowerCase().equals(pkgName)) {
Intent intentFilterItem = new Intent(Intent.ACTION_VIEW, uri);
intentFilterItem.setComponent(new ComponentName(packageName, resolveInfo.activityInfo.name));
context.startActivity(intentFilterItem);
return;
}
}
}
//不满足条件,那么跳转到网页版
goToYingYongBaoWeb(context);
} catch (Exception e) {
e.printStackTrace();
// 发生异常,跳转到应用宝网页版
goToYingYongBaoWeb(context);
}
}
/**
* 跳转到应用宝网页版
*/
public void goToYingYongBaoWeb(Context context) {
try {
Uri uri = Uri.parse(WEB_YINGYONGBAO_MARKET_URL);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.example.jumpmarket;
import android.app.Activity;
import android.content.Context;
import android.telephony.TelephonyManager;
import java.util.Locale;
public class SystemUtil {
/**
* 获取当前手机系统语言。
*
* @return 返回当前系统语言。例如:当前设置的是“中文-中国”,则返回“zh-CN”
*/
public static String getSystemLanguage() {
return Locale.getDefault().getLanguage();
}
/**
* 获取当前系统上的语言列表(Locale列表)
*
* @return 语言列表
*/
public static Locale[] getSystemLanguageList() {
return Locale.getAvailableLocales();
}
/**
* 获取当前手机系统版本号
*
* @return 系统版本号
*/
public static String getSystemVersion() {
return android.os.Build.VERSION.RELEASE;
}
/**
* 获取手机型号
*
* @return 手机型号
*/
public static String getSystemModel() {
return android.os.Build.MODEL;
}
/**
* 获取手机厂商
*
* @return 手机厂商
*/
public static String getDeviceBrand() {
return android.os.Build.BRAND;
}
/**
* 获取手机IMEI(需要“android.permission.READ_PHONE_STATE”权限)
*
* @return 手机IMEI
*/
public static String getIMEI(Context ctx) {
TelephonyManager tm = (TelephonyManager) ctx.getSystemService(Activity.TELEPHONY_SERVICE);
if (tm != null) {
return tm.getDeviceId();
}
return null;
}
}
转载链接:https://juejin.im/post/6884087195917893646/
最后
以上就是小巧钢笔为你收集整理的应用内更新,直接跳转到对应手机应用市场的全部内容,希望文章能够帮你解决应用内更新,直接跳转到对应手机应用市场所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复