private ArrayList results = new ArrayList();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
PackageManager pm = this.getPackageManager();
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> list = pm.queryIntentActivities(intent,
            PackageManager.PERMISSION_GRANTED);
    for (ResolveInfo rInfo : list) {
        results.add(rInfo.activityInfo.applicationInfo.packageName);
        Log.w("Installed Applications", rInfo.activityInfo.applicationInfo
                .loadLabel(pm).toString());
    }
This gives list of all package names installed in your device.
rInfo.activityInfo.applicationInfo.loadLabel(pm)
                .toString();
This gives u the app names.
rInfo.loadIcon(getPackageManager());
And this gives the appicon.