Closed runforprogram closed 1 year ago
用判断是否Block的的条件.虽然实际上这两个值是一样的
小伙子,你说的一样是指什么方面一样?
用判断是否Block的的条件.虽然实际上这两个值是一样的
小伙子,你说的一样是指什么方面一样?
默认都是开启的,为True,可以看下这个链接 https://developer.android.com/about/versions/11/test-changes?hl=zh-cn
Github issue 地址:Toaster/issues/103
小伙子,我之所以要加 CompatChanges.isChangeEnabled(Toast.CHANGE_TEXT_TOASTS_IN_THE_SYSTEM)
判断的原因,是在于 Toast 在调用 setText 会 check 这个值做判断,之前有人反馈会出现那样的崩溃,但是我一直没有复现到,但是至少说明了一件事,CompatChanges.isChangeEnabled(Toast.CHANGE_TEXT_TOASTS_IN_THE_SYSTEM)
有可能会为 false
,从而导致崩溃,你换成其他值来做判断,怕是有点问题吧?因为在 Toast 的源码中,判断的就是 Toast.CHANGE_TEXT_TOASTS_IN_THE_SYSTEM
,而不是拿 NotificationManagerService.CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
来判断,至于这两个值的效果是否一样,我无法苟同,至于 NotificationManagerService.CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK
能不能达到同样的效果,这个你有做过实验么?
CompatChanges.isChangeEnabled(Toast.CHANGE_TEXT_TOASTS_IN_THE_SYSTEM) 如果为false,则会使用自定义的toast.如果CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK为True,在后台无法显示出来.可以通过adb来设置这两个的值做测试. 推测在实际机型上,如果CHANGE_TEXT_TOASTS_IN_THE_SYSTEM为false则CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK也为false.如果为True,则都为True.
这个改动不行,CHANGE_TEXT_TOASTS_IN_THE_SYSTEM如果为false的话,确实会崩溃 没有找到有什么方法能够兼容CHANGE_TEXT_TOASTS_IN_THE_SYSTEM为false,CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK为true的情况(可能实际不存在这种情况).麻烦直接close掉吧.
严格说来应该使用NotificationManagerService.CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK来判断是否只能显示系统样式的Toast,它是NotificationManagerService在显示Toast时,用判断是否Block的的条件.虽然实际上这两个值是一样的. 但在测试兼容性时,通过adb shell am compat disable CHANGE_BACKGROUND_CUSTOM_TOAST_BLOCK com.hjq.toast.demo 禁用后,是可以在后台显示自定义toast的.这样会更准确. 另外,在实际使用中在Android R及以上这个值,正常来说是True的,这里是否有必要还通过反射去调用判断值,直接判断是否>=Android R就可以了.