【问题标题】:java android new Stringjava android 新字符串
【发布时间】:2014-07-21 14:07:39
【问题描述】:

我必须将字节数组转换为字符串。因此我使用这个函数:

public static String byteToString(byte[] bytes) {
    String str = new String(bytes, Charset.forName("UTF8"));

    return str;
}

问题是,它需要 API 9:

Call requires API level 9 (current min is 8): new java.lang.String

但我也想将我的应用程序提供给 API 8 用户。有没有可能或替代方案?

【问题讨论】:

  • 哪个电话? forName?
  • @RobertHarvey 带有 Charset 参数的 String 构造函数

标签: java android string api


【解决方案1】:

您可以使用new String(bytes, "UTF8")(构造函数String(byte[], String))。它始终可用(API 级别 1+)。

【讨论】:

【解决方案2】:

你不能。你可以做的是检查sdk版本

  if (Build.VERSION.SDK_INT >= 9) {
    // Constructor with charset
  } else {
   // Constructor without charset, providing the charset as string
  }

Froyo 设备类似于0.7%

【讨论】:

  • 由于该 API 级别有一个 constructor with a charset argument,这是一个有点糟糕的答案,不是吗?
  • 不,它不是 (imo)。他可以使用检查来调用不同的构造函数,避免额外的调用——我没有检查框架代码——但他可能会避免额外的内部this(....) 调用。无论如何它都不会伤害,@Seelenvirtuose
  • 技术上没有 Charset 对象的构造函数,但 API 8 上的 String charSet (我仍然会使用这种检查)
  • 评论总是关于措辞,我倾向于对诸如cmets和命名等事情有点迂腐。顺便说一句,现在这是一个很好的答案。 +1
  • 我接受了另一个答案,因为它运行良好。但是我也为您的帮助提供了 +1,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多