应用内更新,直接跳转到对应手机应用市场 您所在的位置:网站首页 safari怎么阻止自动跳转到app商店 应用内更新,直接跳转到对应手机应用市场

应用内更新,直接跳转到对应手机应用市场

2024-07-13 03:10| 来源: 网络整理| 查看: 265

  应用内更新

这篇文章已经写了成熟的方案

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 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/  



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有