大佬教程收集整理的这篇文章主要介绍了BreakIterator 在 android API 29 API 30 中表现不同,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我制作了以下函数来将字符串分解为印地语字符。但它的行为与 androID API 29 API 30 不同。在 AndroID 29 印地语单词 चक्की 被分解为 च क् की 但在 AndroID 30 中它被正确分解为 च क्की。
请帮我解决这个问题。
@H_197_6@public List<String> breakIntohinDichar(String textAnswer) { List<String> ansCharList = new ArrayList<String>(); Locale hindi = new Locale("hi","IN"); BreakIterator breaker = BreakIterator.getCharacterInstance(hindi); breaker.setText(textAnswer); int start = breaker.first(); for (int end = breaker.next(); end != BreakIterator.DONE; start = end,end = breaker.next()) { ansCharList.add(textAnswer.subString(start,end)); } return ansCharList; } @H_874_8@解决方法
BreakIterator 的 Android 实现无法准确解释 Bharatiya 脚本(abiguda 类型)。看到这个错误 - https://code.google.com/p/android/issues/detail?id=230832
看起来它已针对 API 30 进行了修复,并且尚未针对以前的版本向后移植。
,我该如何解决这个问题?
正如您在问题中所指出的,Android 29 中的行为不正确,Android 30 中的行为是正确的。
所以这取决于你认为问题是什么:
如果您认为他们修复了 Android 30 中的行为,从而“破坏”了您在更高版本中的应用,那么您可以复制 Android 29 @H_197_6@BreakIterator 进入您的应用(使用不同的名称)并使用它。
如果您认为他们没有修复 Android 29(及更早版本)中的行为,并且您希望您的应用在较旧的 Android 上正常运行,那么您将有一个解决方案 将 Android 30 @H_197_6@BreakIterator 复制到您的应用中(使用不同的名称)并使用它。
请注意,您要做的是为 @H_197_6@BreakIterator 实现向前或向后兼容的行为,尽管不在标准类中。
(可能有更优雅的解决方案,但我没有自己的 Android 主存储库的本地副本来挖掘历史。)@H_616_48@
注意:如果您不能用该类的替代版本替换您的应用对 @H_197_6@BreakIterator 的所有使用,那么 (AFAIK) 将无法使行为保持一致。您无法修补 Android 平台。请注意,虽然您可以在自己的代码中使用 @H_197_6@android.icu.text.breakIterator 代替 @H_197_6@android.text.breakIterator,但这并不能解决您的应用所依赖的其他代码的问题。
但如果您认为问题是 @H_197_6@BreakIterator 在 Android 29 和 30 中的行为不同……没有解决方案。这是事实。是的......它的行为确实有所不同......甚至谷歌也无法让它在 Android 30 中没有不同的行为......现在。
大佬总结
以上是大佬教程为你收集整理的BreakIterator 在 android API 29 API 30 中表现不同全部内容,希望文章能够帮你解决BreakIterator 在 android API 29 API 30 中表现不同所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。