1、跳转主流应用市场工具方法

const val YYB = "com.tencent.android.qqdownloader"
const val HUAWEI = "com.huawei.appmarket"
const val XIAOMI = "com.xiaomi.market"
const val OPPO = "com.oppo.market"
const val VIVO = "com.bbk.appstore"
const val SANSUNG="com.sec.android.app.samsungapps"fun isAppAvailable(packageName: String): Boolean {// 获取packagemanagerval packageManager: PackageManager = App.instance.packageManager// 获取所有已安装程序的包信息val pinfo: List<PackageInfo> = packageManager.getInstalledPackages(0)// 用于存储所有已安装程序的包名val pName: MutableList<String> = ArrayList()// 从pinfo中将包名字取出for (i in pinfo.indices) {val pf: String = pinfo[i].packageNamepName.add(pf)}// 判断pName中是否有目标程序的包名,有true,没有falsereturn pName.contains(packageName)
}/*** 启动到应用商店app详情界面** @param appPkg    目标App的包名* @param marketPkg 应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面*/
fun launchAppDetail(marketPkg: String?) {try {val uri: Uri = Uri.parse("market://details?id=com.tencent.mobileqq")val intent = Intent(Intent.ACTION_VIEW, uri)if (!TextUtils.isEmpty(marketPkg)) {intent.setPackage(marketPkg)}intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)App.instance.startActivity(intent)} catch (e: Exception) {e.printStackTrace()}
}

2、通过抓取网页版本信息,对比本地,然后更新app

class UpdateAsyncTask(var context: Context) : AsyncTask<String, Void, String>() {companion object {private const val tencentUrl: String = "https://android.myapp.com/myapp/detail.htm?apkName=cn.com.blackview.dashcam"private const val getElementsByClass: String = "pp-comp-extra-p"}override fun doInBackground(vararg params: String): String {var version = ""kotlin.runCatching {val doc = Jsoup.connect(tencentUrl).get()val elementsByClass = doc.getElementsByClass(getElementsByClass)if (elementsByClass.size > 1) {version = elementsByClass[1].text()}}.getOrNull()return version//通过本地接口
//        var result = ""
//        kotlin.runCatching {
//            val url = URL("http://test.blackview4g.com:8910/community/api/appVersion")
//            val urlConnection = url.openConnection() as HttpURLConnection
//            val responseCode: Int = urlConnection.responseCode
//            if (responseCode == HttpURLConnection.HTTP_OK) {
//                result = readStream(urlConnection.inputStream)
//            }
//        }.getOrNull()
//
//        return result}override fun onPostExecute(s: String) {super.onPostExecute(s)//版本:4.5.1421115kotlin.runCatching {val versionCode = s.split(":")[1].split(".")[2].toInt()val localVersionCode = App.instance.packageManager.getPackageInfo(App.instance.packageName, 0).versionName.toString().split(".")[2].toInt()Log.e("dd", "localVersionCode:$localVersionCode")Log.e("dd", "versionCode:$versionCode")if (localVersionCode < versionCode) {if (context is BaseActivity) {if ((context as BaseActivity).isFinishing) {return}}LDDialog.Builder(context).setTitle(App.instance.resources.getString(R.string.album_note)).setContent(App.instance.resources.getString(R.string.album_note_upgrade_title)).setRightButton(App.instance.resources.getString(R.string.album_confirm)){ dialog: IDialog ->dialog.dismiss()setIntent()}.setLeftButton(App.instance.resources.getString(R.string.album_cancel)){ dialog: IDialog -> dialog.dismiss() }.show()}}.getOrNull()}private fun setIntent() {when {isAppAvailable(YYB) -> {launchAppDetail(YYB)}isAppAvailable(HUAWEI) -> {launchAppDetail(HUAWEI)}isAppAvailable(XIAOMI) -> {launchAppDetail(XIAOMI)}isAppAvailable(OPPO) -> {launchAppDetail(OPPO)}isAppAvailable(VIVO) -> {launchAppDetail(VIVO)}else -> {val uri = Uri.parse(tencentUrl)val intent = Intent(Intent.ACTION_VIEW, uri)intent.flags = Intent.FLAG_ACTIVITY_NEW_TASKApp.instance.startActivity(intent)}}}private fun readStream(inputStream: InputStream): String {var reader: BufferedReader? = nullval response = StringBuffer()try {reader = BufferedReader(InputStreamReader(inputStream))var line: String?while (reader.readLine().also { line = it } != null) {response.append(line)}} catch (e: IOException) {e.printStackTrace()} finally {if (reader != null) {try {reader.close()} catch (e: IOException) {e.printStackTrace()}}}return response.toString()}}

Android App通过应用宝获取版本信息,从而跳转到不同应用商店更新APP相关推荐

  1. sdk数值与android版本,Android SdkVersion的区别及获取版本信息方法

    1.minSdkVersion,targetSdkVersion,maxSdkVersion,compileSdkVersion四个数值之间有什么区别? • minSdkVersion,maxSdkV ...

  2. Android 打开 GPS 导航并获取位置信息

    原文地址为: Android 打开 GPS 导航并获取位置信息 最近在做一个 Android 项目,需要用到GPS获取位置信息,从 API 查了一下,发现获取位置信息仅需极其简单的一句即可: getL ...

  3. 第五人格获取服务器信息失败,第五人格获取版本信息失败怎么办 获取版本信息失败解决办法[图]...

    第五人格获取版本信息失败怎么办?有很多玩家遇到了这个问题,主要是游戏需要进行更新检查,获取失败就不能保证当前的游戏版本是最新的,就不能进入游戏,下面小编带来了解决办法! 获取版本信息失败解决办法: 1 ...

  4. 第五人格获取服务器信息失败,第五人格正在获取版本信息更新失败怎么办

    第五人格正在获取版本信息怎么回事?相信最近很多玩家在进入第五人格游戏的时候一直会卡在一个显示"正在获取版本信息"的界面,而且在获取一段时间后再显示获取更新失败,请重新尝试,那么这个 ...

  5. 第五人格获取服务器信息失败,第五人格正在获取版本信息解决办法 [图]

    第五人格正在获取版本信息怎么回事?相信最近很家在进入第五人格游戏的时候一直会卡在一个显示"正在获取版本信息"的界面,而且在获取一段时间后再显示获取更新失败,请重新尝试,那么这个是什 ...

  6. 星力+手游运营版本完整版打包下载 代理+服务端+后台+更新+APP

    介绍: 星力+手游运营版本完整版打包下载 代理+服务端+后台+更新+APP 网盘下载地址: https://zijiewangpan.com/AM4tpRbz0L2 图片:

  7. Android 天气APP(二)获取定位信息

    上一篇:Android 天气APP(一)开发准备 编码阶段 新版------------------- 一.使用ViewBinding 二.初始化SDK 三.初始化定位 四.检查和请求权限 五.文章源 ...

  8. Android之使用MediaMetadataRetriever类获取媒体信息

    一.昨天,介绍了使用MediaMetadataRetriever类来获取视频第一帧: http://blog.csdn.net/u012561176/article/details/47858099, ...

  9. Android使用百度地图api获取定位信息(经纬度)

    文章目录 注册 申请密钥 配置 使用 遇到问题 注册 登录百度地图开放平台 注册百度地图开发者,填写相关信息 提交成功后收到邮件 点击链接弹出如下提示就算激活成功了 申请密钥 点击申请密钥或者创建应用 ...

  10. android使用高德地图SDK获取定位信息

    注册账号.创建应用.获取API KEY等这些就不说了,按照官网来就行,我们来讲讲项目的配置及示例代码. 高德地图获取定位信息配置要比百度地图简单多了,这是我比较喜欢的一点,而且之前用百度地图嵌入一个应 ...

最新文章

  1. 「情报局21」2019 AI 进入新算力时代
  2. C++2 dimension vector
  3. c语言选择排序_冒泡、插入、选择排序(C语言)
  4. SAP UI5 应用开发教程之五十二 - 如何使用 SAP UI5 的标准控件结合 Cordova 插件调用手机摄像头进行条形码扫描
  5. linux 二级域名设置
  6. CentOS下如何配置LAMP环境
  7. 【clickhouse】clickhouse强大智能的 Projection (投影) 功能
  8. assimp android build,使用Android Studio+CMakeLists编译assimp
  9. 一起谈.NET技术,asp.net控件开发基础(13)
  10. 化学人学python有前途吗-转载:python之蟒开启理论计算化学的新时代
  11. 2021秋季《数据结构》_EOJ 1086.哥尼斯堡的七桥问题
  12. debian安装mediawiki教程
  13. 亲密关系科学(05)男女大脑激素差异
  14. python正则表达式实战中的总结
  15. 点击图片实现图片居中放大的功能
  16. PDF文件如何在线分割
  17. python3 cookbook中常遇问题的解答记录
  18. 盘点国内外十类垂直型社交网站
  19. 根据百度地图经纬度获取位置信息
  20. 实验室设计SICOLAB第三方检测中心实验室设计

热门文章

  1. com4j学习(2):Visio自定义模具和形状,并添加连接点
  2. 网络远程计算机终止,电脑拨号上网出现错误629:连接被远程计算机终止怎么办...
  3. 我的团长我的团第四十三集
  4. 【WPS】您选定的文件类型不支持包含多份工作表的工作簿。
  5. 领峰:个人如何投资白银炒白银有哪些方法
  6. 《实变函数简明教程》,第三章:可测函数,连续函数复合可测函数是可测函数
  7. 网易云评论 爬虫 java_网易云歌曲评论爬虫如何实现翻页?
  8. Invalid or unexpected token 报错
  9. 管理后台登入万能密码合集
  10. Unity的拍照功能