==和.equals()无法在java中工作

所以我试图比较PackageInfo和ApplicationInfo中的字符串,并在Android Studio中检索它们的包名。

List packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); List apps = pm.getInstalledPackages(PackageManager.GET_PERMISSIONS); for (PackageInfo app : apps) for(ApplicationInfo packageInfo:packages) String packageName = packageInfo.packageName; String sysName = app.packageName; if (packageName != sysName) { Log.d("", "NOPE DOESNT MATCH"); break; } if (packageName.equals(sysName.toString())) ; { Log.d("", "IT MATCHES"); //do something after that 

所以当我在调试模式中看到问题时,他们实际上遇到了相同的字符串

调试模式下的示例:

 com.android.quicksearchbox com.android.quicksearchbox 

它返回“ NOPE DOESNT MATCH

我真的很好奇为什么会发生这种情况而且我尝试了其他forms的修剪来消除白色空间和不消息,它仍然不会让我“IT MATCHES”,任何人都可以帮忙吗?

谢谢。

替换: if (packageName != sysName)

使用: if (!packageName.equals(sysName.toString()))

还有,你有一个; 在最后, if不应该在那里。 (这里: if (packageName.equals(sysName.toString())) ;

实际上,为了更好地形成你的状态,你应该有一个if-else块而不是2 if s。

就像是:

 if (packageName.equals(sysName.toString())){ Log.d("", "IT MATCHES"); } else { Log.d("", "NOPE DOESNT MATCH"); }