在应用内某处调用ToastUtils.showShort(final CharSequence text),结果实际调用的是ToastUtils.showShort(final String format, final Object... args),导致toast无法正常弹出
- AndroidUtilCode 的版本:1.29.0 androidx
- 出现 Bug 的设备型号:任意机型
- 设备的 Android 版本:30
在应用内某处调用ToastUtils.showShort(final CharSequence text),结果实际调用的是ToastUtils.showShort(final String format, final Object... args),导致toast无法正常弹出
升到最新版本试试呀,不要急着提 issue 哈,走这个函数没啥问题的。
private static IToast newToast(ToastUtils toastUtils) {
if (!toastUtils.isNotUseSystemToast) {
if (NotificationManagerCompat.from(Utils.getApp()).areNotificationsEnabled()) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
return new SystemToast(toastUtils);
}
if (!UtilsBridge.isGrantedDrawOverlays()) {
return new SystemToast(toastUtils);
}
}
}
// not use system or notification disable
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N_MR1) {
return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_TOAST);
} else if (UtilsBridge.isGrantedDrawOverlays()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
} else {
new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_PHONE);
}
}
return new ActivityToast(toastUtils);
}
@Blankj Blankj大神,android 9机器上我遇到悬浮窗遮挡toast的情况, A悬浮窗设置的type=TYPE_APPLICATION_OVERLAY。按我对书本层级这段理解,只有欲显示的B窗口type >= TYPE_APPLICATION_OVERLAY时,才有可能显示在A窗口上面。
所以使用ActivityToast怎么做都只能显示在A悬浮窗下面, 不知理解这否正确?
那边你的代码 else if (UtilsBridge.isGrantedDrawOverlays()) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY); } else { new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_PHONE); } } return new ActivityToast(toastUtils);
是不是写错了,应该改成: else if (UtilsBridge.isGrantedDrawOverlays()) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY); } else { return new WindowManagerToast(toastUtils, WindowManager.LayoutParams.TYPE_PHONE); } } return new ActivityToast(toastUtils);
在realme RMX1971,android10,弹出dialogfragment情况下,无法弹出Toast
同样遇到toast在一加手机上不弹出的问题,跟楼上的一致。确认弹出dialogfragment情况下,无法弹出Toast。
1.30.6 版本已修复