解决onelink短链被应用市场拦截的问题

问题

1.Onelink是啥就不说了,你可以去问谷歌
2.需求
问题:国内应用市场自带浏览器会识别onelink短链,跳转到自家应用市场
不跳转手机自带的应用市场,我想跳转到手机上安装的GooglePlay,怎么办?
一般 onelink 地址:https://go.onelink.me/app/…
到了浏览器中会重定向:market://details?id=包名&…

解决方法

1.创建一个webview 控件,调用loadUrl方法
2.创建内部类继承WebViewClient,覆写shouldOverrideUrlLoading

// 针对国内地址被拦截的问题
url?.let {if(it.contains("market://")){val startIndex = it.indexOf("=")val endIndex = it.indexOf("&")if(startIndex+1 < endIndex){// 处理一:统一规则,最后到onPageFinished方法中处理val packageName = it.substring(startIndex+1,endIndex)val newUrl = "https://play.google.com/store/apps/details?id=$packageName"view?.loadUrl(newUrl)// 处理二:直接处理,直接跳转return true}}
}
return super.shouldOverrideUrlLoading(view, url)

3.覆盖 onPageFinished 方法,创建自己的跳转规则

var isFirstLoad = true
if (view.url.contains("play.google.com") && view.url.contains("?id=") && isFirstLoad) {isFirstLoad = false// 跳转到应用市场
}else{// 跳转浏览器下载
}

4.跳转到应用市场

fun startMarket(activity: Activity, url: String?) {val GOOGLE_PLAY = "com.android.vending"try {if ("" == url) returnval packageName = url!!.split("?id=")[1]//这里开始执行一个应用市场跳转逻辑,默认this为Context上下文对象val uri = Uri.parse("market://details?id=${packageName}")val intent = Intent(Intent.ACTION_VIEW, uri)//跳转到应用市场,非Google Play市场一般情况也实现了这个接口//存在手机里没安装应用市场的情况,跳转会包异常,做一个接收判断if (intent.resolveActivity(activity.packageManager) != null) {           //可以接收if (!TextUtils.isEmpty(packageName)) {intent.setPackage(GOOGLE_PLAY)intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)activity.startActivity(intent)}} else { //没有应用市场,我们通过浏览器跳转到Google Playintent.data = Uri.parse(url)//这里存在一个极端情况就是有些用户浏览器也没有,再判断一次if (intent.resolveActivity(activity!!.packageManager) != null) { //有浏览器activity.startActivity(intent)} else {Toast.makeText(activity,"You don't have an app market installed, not even a browser!",Toast.LENGTH_SHORT).show()}}} catch (e: Exception) {// 跳转失败了}
}

5.跳转浏览器下载

private fun toDownLoad(url : String) {try {val intent = Intent()intent.action = "android.intent.action.VIEW"intent.data = Uri.parse(url)intent.addCategory(Intent.CATEGORY_BROWSABLE)startActivity(intent)} catch (e: Exception) {e.printStackTrace()}
}

解决onelink短链被应用市场劫持的问题相关推荐

  1. 解决安卓微信video标签标签劫持

    解决安卓微信video标签标签劫持 需求 期望网页中的video标签,不在安卓微信中被劫持播放. 代码 可能视频地址失效,换个视频地址,再测试. <!DOCTYPE html> <h ...

  2. dns劫持解决方法有哪些、dns劫持什么意思

    一.dns劫持是什么 1.dns劫持的定义 Dns在这里是Domain Name Server的缩写,就是域名系统的意思,dns劫持就是指我们在使用电脑上网的时候,可以有效的阻止的域名解析请求,然后进 ...

  3. 「镁客·请讲」禾赛科技李一帆:定位激光雷达整体方案解决商,填补国内市场空白...

    目前来看,近五年内机械式激光雷达还将会是主流产品,这也是禾赛科技的主攻方向. 对于Level 3级别的辅助自动驾驶和Level 4级别的无人驾驶而言,激光雷达可以说有着不可替代的作用.之所以这样说,是 ...

  4. 如何解决Chrome首页被流氓网站劫持的问题

    最近新下了Chrome,发现每一次打开时都会有流氓网站劫持了首页,并且修改设置里的主页.高级里的启动时都没有用.这里记录一下我的解决方法,供大家参考 Chrome快捷方式可能被篡改 在Chrome地址 ...

  5. 流量劫持怎么解决方法有那些、流量劫持手法有那些

    流量圈的故事很多,劫持与反劫持的故事在很长时间内将继续演绎下去.对于老老实实做人,认认真真做站的朋友来说,好不容易做出了一点成绩,一劫持就又回到解放前了,那么你的流量都被劫持到哪里去了?常见的劫持方法 ...

  6. 解决chrome浏览器us-yahoo.com搜索劫持

    一直用着greenchrome浏览器,结果有次之后,地址栏的默认搜索引擎用的bing,但是仍然会重定向到us-yahoo.com进行搜索,初起时以为是greenchrome插件作者的返利,类似2345 ...

  7. 解决Chrome浏览器主页被篡改(劫持)hh899899.com的问题

    问题描述: · Chrome浏览器主页被篡改(劫持)hh899899.com: · 桌面快捷方式属性目标栏没有后缀网页地址,但是chrome://version下可以看到: · 使用了多种办法都不管用 ...

  8. 解决Chrome浏览器启动页被劫持篡改为360

    方法: 打开Chrome所在文件位置,找到chrome.exe,直接重命名这个exe,创建快捷方式到桌面就OK 原理: 这个劫持一般根据chrome.exe这个名字来的,直接改名字,比如改成,chro ...

  9. 解决www 54kk com/baidu劫持浏览器的问题

    endurer 原创 2005.10.27第一版 *endurer注:为了安全起见,下文中的"http://"均用"hxxp://"代替. 刚才一位同事的电脑中 ...

最新文章

  1. 日本推出透明公厕,智能玻璃控制透明度,有人如厕就“屏蔽”外界
  2. 白平衡——图像处理中的一种增强技术
  3. 超链接浏览meta name=format-detection/ 的用法
  4. (0082)iOS开发之搭建iOS自动化打包平台(利用Jenkins持续集成iOS项目)
  5. python 调用linux命令-四种执行python系统命令的方法
  6. java valueof的用法_Java SignStyle valueOf()用法及代码示例
  7. 字符设备驱动基本流程
  8. 机器学习(一)梯度下降算法
  9. 为什么我共享的文件别人看不到_【零基础学云计算】解析文件共享及访问方式...
  10. 深度解密Go语言之pprof
  11. NET主流ORM框架分析
  12. [css] 你有使用过css的writing-mode属性吗?说说它有哪些应用场景?
  13. 深入理解 Objective-C:方法缓存
  14. 当大数据遇上“智慧园区”会怎样?
  15. 排序——冒泡排序算法
  16. scipy模块_misc模块,imread,imresize, imsave / imshow/ imrotate
  17. 瀑布式项目管理软件测评!
  18. Faulty Robot-(dfs或者dijkstra)
  19. 武汉大学研究生慕课《学术道德与学术规范》——考试题目总结
  20. python pdf书籍领取

热门文章

  1. MediaPlayer( 媒体播放器),TelephonyManager(电话管理类),MediaRecorder(媒体录音机)
  2. 和ts一般怎么玩_攻略|梦幻西游手游:金币小号怎么玩?高手一般都这么弄
  3. 【题解】codeforces765F Souvenirs
  4. Git与GitHub说明分析
  5. 细胞穿膜肽IAWVKAFIRKLRKGPLG
  6. 深富策略:周期股反弹有限 新能源是主基调
  7. stm32实现按键控制三色灯(stm32cubeIDE)
  8. 批处理使用问题处理(逐步添加)
  9. 计算机网络谢希仁版(第七版)答案
  10. 【翻译】四种类型的为什么:产品背后的驱动力是什么?