The getInstalledPackages
almost contains all you can get from PackageManager about an application. But it doesn't contain the intents of each components. In particular, ActivityInfo doesn't contain a field to store the intent or action to start it. As far as I know, it is difficult to get what you want programatically.
But for popular application, you can directly have their apks, get their AndroidManifest.xml
and get what you want manually.
If you want to skip the user input if multiple components(applications) can handle your action, then you need to specify the component explicitly by intent.setComponent()
.
Intent intent = new Intent(Intent.ACTION_NAME);
intent.setComponent(new ComponentName("com.package.address","com.package.address.TargetActivity"));
startActivity(intent);