==和.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"); }
- 是否有可能从Android / Java或iPhone / objective-C中的代码中获取变量名称以进行调试
- java.lang.ArrayIndexOutOfBoundsException:length = 0; index = 0 – 数据库阅读 – Android
- 构建Cordova Android项目时出错
- 货币根据国家在android
- 将SqlCipher与Android应用程序集成(在Windows上)
- Android无效使用SingleClientConnManager:仍然分配了连接
- 如何在Android中实现推送通知
- SQL中的Android单引号与LIKE StateMent
- 虽然Socket无法连接,但它不会抛出exception