AndroidUtilCode
AndroidUtilCode copied to clipboard
:fire: Android developers should collect the following utils(updating).
## 描述 Bug 1.在中文环境下,使用TimeUtils.millis2String(long millis, @NonNull final String pattern)方法,pattern传入:h:mm a,获取到的时间能正常显示,如:8:00上午 2.切换系统语言为其他语言,此时重复上面的步骤,获取到的时间显示不对,在其他语言环境下,仍显示:8:00上午,显示错误 - AndroidUtilCode 的版本:utilscodex:1.31.1 - 出现 Bug 的设备型号:华为畅享50 - 设备的 Android 版本:Android 10 查看源码,TimeUtils类里的SDF_THREAD_LOCAL里面已经缓存了SimpleDateFormat,切换语言时,因为h:mm a使用过,缓存在SDF_THREAD_LOCAL,不会重新添加,但此时的simpleDateFormat是在中文环境创建的,导致出来的时间一直是中文,切换了语言也不会变……
## 描述 Bug 如题,当界面上同时存在多个可见活动(透明背景的活动模拟dialog),同时没有通知权限,会调用多个show方法导致多个Toast出现 - AndroidUtilCode 的版本:utilcodex 1.31.1 - 出现 Bug 的设备型号:小米系列 - 设备的 Android 版本:12 ## 相关代码 Line 674 in ActivityToast.show() (com.blankj.utilcode.util.ToastUtils) @Override public void show(int duration) { if...
## 描述 Bug APP处于后台,点击通知栏启动Activity前判断了一下是否处于前台,UtilsActivityLifecycleImpl.isAppForeground()返回true;但实际是处于后台的。 - AndroidUtilCode 的版本:1.31.1 - 出现 Bug 的设备型号: - 设备的 Android 版本: ## 相关代码 public void onReceive(Context context,final Intent intent) { String action = intent.getAction(); LogUtil.i(">>>>>>>>>>>>>" +...
utilcode版本:1.29.0 工具库aar包中的Manifest文件有一个**UtilsFileProvider**声明: ```xml ``` 其关联的xml paths声明文件`util_code_provider_paths.xml`中有一个块: ```xml ... ... ``` 这个路径对应的是外部存储器的根目录。UtilsFileProvider是一个ContentProvider,我们知道ContentProvider的初始化是在Application的onCreate之前的,上面这个`external-path`的声明会触发系统调用`android.os.Environment.getExternalStorageDirectory`。这个调用是早于任何用户可见的交互确认操作的。 这里问题就来了,`getExternalStorageDirectory`通常是被列为隐私敏感API的,在用户授权之前就调用,在安全检测中会被检测为违规调用。以下是以我司应用为例,通过Frida在root设备上抓到的启动调用堆栈:  基于以上的排查思路,我尝试了将utilcode-1.29.0.aar改为zip后缀解压后,注释掉`util_code_provider_paths.xml`中的external-path声明块,再重新压缩改后缀为aar。经过验证,这样就不会在UtilsFileProvider的初始化阶段触发`getExternalStorageDirectory`调用了。 我查看了`UtilsFileProvider`的源码,看起来作者的意图只是想利用Provider的执行时机来获取ApplicationContext,实现Utils类的无感初始化。 如果确实只是出于这样的目的,建议作者大大可以考虑去掉`util_code_provider_paths.xml`中的external-path声明块,以规避国内使用可能遇到的隐私合规问题。
https://github.com/afkT/DevUtils/blob/master/lib/DevApp/src/main/java/dev/utils/app/JSONObjectUtils.java
在业务中使用 showSoftInput(@NonNull final View view),切换键盘代码 ``` if (!isShowEmojiPanel) { KeyboardUtils.hideSoftInput(etMsgSend) showEmojiFragment() } else { KeyboardUtils.showSoftInput(etMsgSend) hideEmojiFragment() } isShowEmojiPanel = !isShowEmojiPanel ``` 有一条路径必现软键盘收起后又弹出,查找是 imm.toggleSoftInput 导致,删除 imm.toggleSoftInput 这个代码后没问题了
网络监听器
## 描述 Bug 简洁地描述下 Bug。 - AndroidUtilCode 的版本:1.30.6 - 出现 Bug 的设备型号:PCT-AL10 - 设备的 Android 版本:API 29 ## 相关代码
Process Name: 'com.feemoo:pushcore' Thread Name: 'RxCachedThreadScheduler-1' Back traces starts. io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has...
部分手机出现闪现现象, 提示框显示就消失了,完全看不清提示文字 - The version of AndroidUtilCode: utilcodex:1.31.0 - The device: 小米10 (MIUI 14..0.9) - The version of device: API 33 ## 调用这两个方法都存在问题 ```java ToastUtils.showShort("XXX"); ToastUtils.showLong("XXX"); ```