La pantalla principal se inicia con el Intent
ACTION_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
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'. –