为什么我的String to String比较失败?

时间:2010-08-26 14:59:03

标签: java android string

我有一个Android应用,我想检查一下,安装的应用名称是否与传递给包含此代码的函数的字符串相匹配。代码和示例如下:

private Boolean checkInstalledApp(String appName){
    PackageManager pm = this.getPackageManager(); 
    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
    List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);
    Boolean isInstalled = false;
    for(ResolveInfo info: list) {
      if (info.activityInfo.applicationInfo.loadLabel( pm ).toString()==appName){
          isInstalled = true;
          break;  
      }
    } 

    return isInstalled;
}

假设您拨打了checkInstalledApp("SetCPU");并且电话上的应用名称被称为相同的内容,则应该返回true。但是,它永远不会。我记录了结果,它应该匹配,但它没有。任何人都可以告诉我为什么这不起作用?

3 个答案:

答案 0 :(得分:42)

使用String的equals()方法代替==运算符来比较字符串:

info.activityInfo.applicationInfo.loadLabel( pm ).toString().equals(appName)

在Java中,新手遇到的最常见错误之一是使用==来比较字符串。您必须记住,==比较对象引用,而不是内容。

答案 1 :(得分:5)

答案 2 :(得分:0)

public static boolean compaireString (String string, String string2) 
{
    // string == null && String2 == null or they reference the same object
    if (string == string2) return true;
    //we have to be sure that string is not null before calling a methode on it
    if (string != null && string.equals(string2)) return true;

   return false;
}