2010-11-17 28 views

cevap

6

GET_ACTIVITIES bayrağını kullanarak PackageManager ürününü getPackageArchiveInfo() kullanarak yapabilmeniz gerekir. Bunu denemedim ama

7

Cevabınız için teşekkürler!

ben de bir uygulamada tüm faaliyetleri listeleme için bir çözüm değil, gerçi en şık ...

//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

bu 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

niyeti nerede kullanırım? @easycheese – Tiger98

6

uygulama bağlamı o zaman bu kullanmak varsa buldum:

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(); 
    } 
} 
İlgili konular