To fetch the names and icons of the installed applications, you need to use Package Manager class, here is a snippet of code, that will let you fetch application's name and icons
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class FetchApplicationsActivity extends Activity {
TextView data;
ImageView image1;
LinearLayout holdlayout;
View l1;
private ArrayList results;
List<ResolveInfo> list;
TextView result;
String str = "";
Drawable icon;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
l1 = findViewById(R.id.Layout1);
results = new ArrayList();
PackageManager pm = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
list = pm.queryIntentActivities(intent,
PackageManager.PERMISSION_GRANTED);
for (ResolveInfo rInfo : list) {
str = rInfo.activityInfo.applicationInfo.loadLabel(pm).toString()
+ "\n";
results.add(rInfo.activityInfo.applicationInfo.loadLabel(pm)
.toString());
Log.w("Installed Applications", rInfo.activityInfo.applicationInfo
.loadLabel(pm).toString());
icon = rInfo.activityInfo.applicationInfo.loadIcon(pm);
holdlayout = new LinearLayout(getApplicationContext());
holdlayout.setOrientation(LinearLayout.HORIZONTAL);
data = new TextView(getApplicationContext());
data.setText(str);
image1 = new ImageView(getApplicationContext());
image1.setBackgroundDrawable(icon);
((ViewGroup) holdlayout).addView(image1);
((ViewGroup) holdlayout).addView(data);
((ViewGroup) l1).addView(holdlayout);
}
}
}
Edit- You can define your main.xml
as,
?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:id="@+id/Layout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
</LinearLayout>
</ScrollView>
</LinearLayout>
Here I have created dynamic textviews
, Imageviews
and layouts
to show the names and icons. You can create your own customized list to show this.
Edit2- Here is a good link on how to create customized list and also look here. I think these will solve the issue.