You can get all activities for packages the following way:
List<PackageInfo> installedPackages = getPackageManager().getInstalledPackages(PackageManager.GET_ACTIVITIES);
Iterator packageIterator = installedPackages.iterator();
PackageInfo packageInfo = null;
while(packageIterator.hasNext()){
packageInfo = (PackageInfo) packageIterator.next();
if(packageInfo.activities != null){
for(ActivityInfo activity : packageInfo.activities){
Log.d("ACTIVITY", activity.name);
}
}
}
However, you can only start an external activity if that app has defined an intent-filter for it, and if you now the exact ACTION of the intent filter.
Update: To get all activities for one package name, use:
PackageInfo packageInfo = getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);