2010-11-17 17 views

Respuesta

6

Debería poder hacer exactamente eso usando PackageManager's getPackageArchiveInfo() usando la bandera GET_ACTIVITIES. No lo he probado aunque

7

¡Gracias por la respuesta!

creo que he encontrado una solución para la inclusión de todas las actividades en una aplicación demasiado, no es el más elegante, aunque ...

//the method gets all activities for an application 
private void getAppActivities() { 
    PackageManager pManager = getPackageManager(); 
    Intent startIntent = setStartIntent(); 
    List<ResolveInfo> apps = pManager.queryIntentActivities(startIntent, 0); 
    int count = apps.size(); 
    for (int i = 0; i < count; i++) { 
     ResolveInfo info = apps.get(i); 
     String packageName = info.activityInfo.packageName; 
     Intent intent = new Intent(); 
     intent.setPackage(packageName); 

     //activities holds the activities defined in the package 
     List<ResolveInfo> activities = pManager.queryIntentActivities(intent, 0); 
    } 
} 
+0

¿Qué es este setStartIntent()? – RejoylinLokeshwaran

9
private void getActivityList() throws NameNotFoundException { 
    Intent i = new Intent(Intent.ACTION_MAIN); 
    i.addCategory(Intent.CATEGORY_LAUNCHER); 
    PackageManager pm = this.getPackageManager(); 

    PackageInfo info = pm.getPackageInfo("com.packagename", PackageManager.GET_ACTIVITIES); 

    ApplicationInfo test = info.applicationInfo; 
    ActivityInfo[] list = info.activities; 

} 
+0

donde usar la intención i? @easycheese – Tiger98

6

Si tiene el contexto de aplicación a continuación, utilice la siguiente:

private static void listAllActivities(Context context) { 
    PackageManager pManager = context.getPackageManager(); 
    String packageName = context.getApplicationContext().getPackageName(); 

    try { 
     ActivityInfo[] list = pManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES).activities; 
     for (ActivityInfo activityInfo : list) { 
      Log.d(TAG, "ActivityInfo = " + activityInfo.name); 
     } 
    } catch (PackageManager.NameNotFoundException e) { 
     e.printStackTrace(); 
    } 
} 
Cuestiones relacionadas