请问诸位 Android 开发大佬, EditText 的 ReplacementTransformationMethod 有什么办法绕过去

2020-09-15 13:01:55 +08:00
 chenyu8674
接口需以大写字母入参,APP 中对 EditText 使用 ReplacementTransformationMethod 进行了强制大写转换,提交时使用 getText()获取内容,但项目上线后发现极少数请求的入参依然是小写字母

虽然后台有对应并不影响业务,也在 APP 中提交时加了 toUpperCase 处理,但没想明白 ReplacementTransformationMethod 是怎么被绕过的,在几十台测试机上试过各种骚操作也再现不出来
4506 次点击
所在节点    Android
12 条回复
Lin0936
2020-09-15 13:11:11 +08:00
复制粘贴?
winterbells
2020-09-15 13:15:01 +08:00
直接扒接口了?
chenyu8674
2020-09-15 13:54:13 +08:00
@Lin0936 #1 自己测试时复制粘贴依然是大写

@winterbells #2 给合作单位的人员使用的,应该不会有人扒接口
cczhrd
2020-09-15 14:15:19 +08:00
提交时加了 toUpperCase 处理 还能发现入参依然是小写字母?
kop1989
2020-09-15 14:25:49 +08:00
稍微看了下源码,感觉逻辑上不太能导致无效(也有可能是我没理解其中奥妙😂)。
会不会是部分手机型号 /系统版本的问题?或者是出问题的输入值有没有什么规律?再或者是 getReplacement 这个实现本身程序的问题?
chenyu8674
2020-09-15 14:35:50 +08:00
@cczhrd #4 toUpperCase 是发现问题后加上的,不然也不会定位到 ReplacementTransformationMethod 了
Lin0936
2020-09-15 14:50:50 +08:00
貌似看不出来什么问题,tracker 看一下是不是跟系统版本 /手机型号有关吧。
nznd
2020-09-15 15:18:50 +08:00
有的系统级复制粘贴是直接改属性的 value,比如可以在计算器随意粘贴中文,这个看手机系统的
chenyu8674
2020-09-15 15:23:18 +08:00
@Lin0936 #7
出问题的手机是荣耀 9X
我们有同型号测试机,但两边都再现不出该问题了……
chenyu8674
2020-09-15 16:28:47 +08:00
@nznd #8
还真没遇到过,请问哪些系统会有这种现象,我看看能不能搞台机器测试下
Michelangelono
2020-09-15 16:31:50 +08:00
接口请求的时候上传手机型号
qihehulian
2020-09-22 10:11:19 +08:00
Xposed.findAndHookMethod(EditText.class, "getText", new MyMethodHook());,完事。MyMethodHook:afterMethodHooked 转换大写即可。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/707153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX