¿Por qué falla mi comparación String to String?
Tengo una aplicación para Android donde quiero comprobar si un nombre de aplicación que se instala coincide con una cadena pasada a la función que contiene este código. El código y el ejemplo son los siguientes:
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; }
Asumiendo que usted llamó checkInstalledApp("SetCPU");
Y el nombre de la aplicación en el teléfono se llama lo mismo que debe devolver true
. Sin embargo, nunca lo hace. He registrado los resultados y debe coincidir, pero no lo hace. ¿Puede alguien por favor aclararme por qué esto no funciona?
- SDK Manager.exe no funciona
- ¿Cómo puedo comprobar el uso de memoria de un objeto en java
- MBTilesRasterDataSource no se encuentra en nutiteq SDK?
- ¿Qué hacer con nunca suceder, excepciones inútiles?
- Análisis de Android Project con Lint y SonarQube
- ¿Cómo eliminar el permiso específico al crear una aplicación para Android con gradle?
- Cómo deshabilitar la búsqueda de WWW-Authenticate encabezado en 401 en HttpUrlConnection en Android?
- Gradle: ¿Cómo puedo incluir un jar local de un proyecto de java dependiente en una compilación de Android?
- Cómo utilizar appcompat-v7 con Android API 19
- ¿Cómo silenciar la notificación al pulsar el botón de volumen?
- No se puede encontrar el diseñador de interfaz de usuario en el nuevo estudio de Android
- Volley - Enviar una solicitud POST con JSONArrayRequest
- ¿Es la agrupación de objetos pequeños más eficiente que el recolector de basura Java de Android?
Utilice el método equals () de String en lugar del operador == para comparar cadenas:
info.activityInfo.applicationInfo.loadLabel( pm ).toString().equals(appName)
En Java, uno de los errores más comunes que los recién llegados encuentran es usar ==
para comparar las Cuerdas. Usted tiene que recordar, ==
compara las referencias del objeto, no el contenido.
Revise el número 7: Top 10 – Nuevos errores del desarrollador Java
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; }