2011-07-26 31 views
11

Por lo general, hay un iniciador en un dispositivo Android. Pero a veces los usuarios instalan algunos mientras solo uno de ellos está activo.¿Qué iniciador se está ejecutando?

¿Cómo puedo verificar qué launcher está actualmente activo en mi dispositivo Android?

Gracias.

Respuesta

22

La pantalla principal se inicia con el IntentACTION_MAIN con categoría CATEGORY_HOME (desde el Javadoc para Intent). Use un ResolveInfo para esta intención de saber qué aplicación se iniciará.

Esto le dará la aplicación por defecto Inicio:

final Intent intent = new Intent(Intent.ACTION_MAIN); 
intent.addCategory(Intent.CATEGORY_HOME); 
final ResolveInfo res = getPackageManager().resolveActivity(intent, 0); 
if (res.activityInfo == null) { 
    // should not happen. A home is always installed, isn't it? 
} else if ("android".equals(res.activityInfo.packageName)) { 
    // No default selected  
} else { 
    // res.activityInfo.packageName and res.activityInfo.name gives you the default app 
} 

Ahora, si usted quiere saber cuál está en funcionamiento, se tardará más tiempo, porque ActivityManager es lenta:

// instead of the best, query all activities that match: 
final List<ResolveInfo> list = ((PackageManager)getPackageManager()).queryIntentActivities(intent, 0); 
// TODO from there, use ActivityManager to know which one is running and is in the list 
+2

necesidad de mencionar que si no hay un lanzador por defecto y más de uno instalado, entonces obtendrá algo como 'com.android.internal.app.ResolverActivity'. –

3
private String findLauncherPackageName(){  
    final Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_HOME); 
    final ResolveInfo res = getPackageManager().resolveActivity(intent, 0); 
    Log.e("ANDRO_ASYNC", String.format("findLauncherPackageName()%s",res.activityInfo.packageName)); 
    return res.activityInfo.packageName; 
} 
+1

Este código no siempre devuelve el iniciador activo, devolverá el iniciador predeterminado, si hay alguno. – THelper

0

puede verificar el título del iniciador activo solo si está marcado como predeterminado. otherwwise va a obtener el resultado como

com.android.internal.app.ResolverActivity 
Cuestiones relacionadas