So I was trying to compare the string in PackageInfo and ApplicationInfo and retrieve their package name in 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
So the problem came by when I saw inside the debug mode, they actually HAD the same string
Example in debug mode :
com.android.quicksearchbox
com.android.quicksearchbox
It returns as "NOPE DOESNT MATCH"
I'm really curious why this will happen and I have tried other form like trim to take off away white spaces between and no, it still does not return me "IT MATCHES", can anyone help please?
Thanks.
解决方案
Replace: if (packageName != sysName)
With: if (!packageName.equals(sysName.toString()))
Also, you have a ; at the end of if which shouldn't be there. (Here: if (packageName.equals(sysName.toString())) ;)
Actually, to form your condition better, you should have an if-else block instead of 2 ifs.
something like:
if (packageName.equals(sysName.toString())){
Log.d("", "IT MATCHES");
} else {
Log.d("", "NOPE DOESNT MATCH");
}