To get al installed apps you can use Package Manager..
List<PackageInfo> apps = getPackageManager().getInstalledPackages(0);
To run you can use package name
Intent launchApp = getPackageManager().getLaunchIntentForPackage(“package name”)
startActivity(launchApp);
For more detail you can read this blog http://codebucket.co.in/android-get-list-of-all-installed-apps/