无法在android中调用String.isEmpty()

teo*_*tik 80 java android

在我的Android应用程序中,我不能使用位于JDK 1.6中的String.isEmpty()函数.Android 2.1 lib在java.lang.String类中没有此函数

我试图将JRE系统库输入到我的项目中,因为它具有此功能,但没有任何效果.

如何解决此问题并允许我的应用程序使用此功能?

twa*_*ton 120

您可以使用android.text.TextUtils.isEmpty()代替.此方法还检查String是否为空并且自API级别1起可用.

if (TextUtils.isEmpty(str)) {
    Log.d(TAG, "String is empty or null!");
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*n C 83

如何解决此问题并允许我的应用程序使用此功能?

你不能.

String.length() == 0改用.它向后兼容到JDK 1.0 ...以及J2ME.

String.equals("") 是另一种选择.


您确定没有办法将Eclipse配置为从明确的库中放入代码类吗?

如果您希望自己的应用在真正的 Android设备上运行,那就不是了.Java/Android平台故意让您难以修改核心类库的行为.首先,您只能通过修改bootclasspath或rt.jar文件的Davlik等效项来实现,并且这些都不能在正在运行的JVM中完成.

那种修修补补的有风险的潜在破坏Java的其他应用程序.即使假设您不能直接损害Android应用程序分离(因为下面提到的进程/ uid分离),对(共享)Java核心类的恶意调整仍可能允许一个应用程序干扰或窃取来自另一个应用程序的信息.

  • Json-simple是开源的; 创建自己的不使用String.isEmpty()的库版本.这比尝试调整android运行时库更简单(也更安全). (7认同)
  • @StephenC Diane Hackborn(高级Android工程师)写道:"[我们不认为VM是一个安全屏障,浏览器是一个很好的理由,为什么会这样 - 绝大多数浏览器(和部件) WebKit是一个原生的C++库.我们平台的主要安全障碍是通过内核强制执行的进程/ uid分离,因此应用程序中的本机代码不比Java代码安全. (http://markmail.org/message/ynstgbptjqmveh5p)"*.无论如何,内核保护非常强大,并且还有市场保护. (4认同)

kzo*_*tin 6

这个方法出现在API9中,所以你无法在Android2.3之前使用它


Sha*_*shi 5

你可以用它TextUtils.isEmpty(str).这是从API级别1开始可用的,或者您可以创建自己的方法,如下所示

public boolean isEmpty(CharSequence str) {
    if (str == null || str.length() == 0)
        return true;
    else
        return false;
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为这应该是选定的答案.Usint TextUtils是最好的选择.你不必创建自己的功能来做同样的事情. (2认同)