2010-11-17 17 views
10

マニフェストファイルで説明されている「サードパーティ製」アプリケーションからすべてのアクティビティを取得することが可能であるはずです。 私はどのように把握することはできません。例えばアプリケーションによって公開されるすべてのアクティビティを一覧表示するにはどうすればよいですか?

:事前に

List<Activity> aList = packManager.getActivitiesForPackage("package.name"); 

感謝!

答えて

6

GET_ACTIVITIESフラグを使用してPackageManagergetPackageArchiveInfo()を使用するだけで、これを行うことができます。私はそれを試みたことはありません

7

お返事ありがとう!

は、私があまりにもアプリケーション内のすべての活動を一覧表示するためのソリューション、ではないが、最もエレガントな...

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

この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

ここでは、 @easycheese – Tiger98

6

を使用すると、アプリケーションコンテキストは、その後、これを使用している場合を見つけたと思う:

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(); 
    } 
} 
関連する問題