程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了BreakIterator 在 android API 29 API 30 中表现不同大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决BreakIterator 在 android API 29 API 30 中表现不同?

开发过程中遇到BreakIterator 在 android API 29 API 30 中表现不同的问题如何解决?下面主要结合日常开发的经验,给出你关于BreakIterator 在 android API 29 API 30 中表现不同的解决方法建议,希望对你解决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,请注明来意。