Open In App

Different Ways to Get List of All Apps Installed in Your Android Phone

Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we are going to show the list of all the installed apps on your Android phone. So here we are going to learn how to implement that feature in three different ways. Note that we are going to implement this project in both Java and Kotlin Programming languages for Android.

Step-by-Step Implementation

Step 1: Create a New Project in Android Studio

To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. The code for that has been given in both Java and Kotlin Programming Language for Android.

Step 2: Working with the XML files

Navigate to the app > res > layout > activity_main.xml and add the below code to that file. Below is the code for the activity_main.xml file. 

XML




<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="16sp"
    tools:context=".MainActivity">
  
    <Button
        android:id="@+id/check"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:onClick="getallapps"
        android:text="Get Installed Apps"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
  
    <TextView
        android:id="@+id/totalapp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/check" />
  
    <ListView
        android:id="@+id/listview"
        android:layout_width="365dp"
        android:layout_height="523dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/totalapp"
        tools:layout_editor_absoluteY="150dp" />
      
</androidx.constraintlayout.widget.ConstraintLayout>


Method 1

Go to the MainActivity file and refer to the following code. Below is the code for the MainActivity file. Comments are added inside the code to understand the code in more detail.

Java




import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.List;
  
public class MainActivity extends AppCompatActivity {
    ListView listView;
    TextView text;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // initialise layout
        listView = findViewById(R.id.listview);
        text = findViewById(R.id.totalapp);
    }
  
    public void getallapps(View view) {
        // get list of all the apps installed 
        List<ApplicationInfo> infos = getPackageManager().getInstalledApplications(PackageManager.GET_META_DATA);
        // create a list with size of total number of apps 
        String[] apps = new String[infos.size()];
        int i = 0;
        // add all the app name in string list
        for (ApplicationInfo info : infos) {
            apps[i] = info.packageName;
            i++;
        }
        // set all the apps name in list view
        listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, apps));
        // write total count of apps available. 
        text.setText(infos.size() + " Apps are installed");
    }
  
    @Override
    protected void onStart() {
        super.onStart();
    }
}


Kotlin




import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    lateinit var listView: ListView
    lateinit var text: TextView
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // initialise layout
        listView = findViewById(R.id.listview)
        text = findViewById(R.id.totalapp)
    }
  
    fun getAllApps() {
        // get list of all the apps installed 
        val infos = packageManager.getInstalledApplications(PackageManager.GET_META_DATA)
        // create a list with size of total number of apps 
        val apps = arrayOfNulls<String>(infos.size)
        // add all the app name in string list
        for ((i, info) in infos.withIndex()) {
            apps[i] = info.packageName
        }
        // set all the apps name in list view
        listView.adapter = ArrayAdapter(this@MainActivity, android.R.layout.simple_list_item_1, apps)
        // write total count of apps available. 
        text.text = infos.size.toString() + " Apps are installed"
    }
  
    override fun onStart() {
        super.onStart()
    }
}


Output:

Method 2

Go to the MainActivity file and refer to the following code. Below is the code for the MainActivity file. Comments are added inside the code to understand the code in more detail.

Java




import android.content.pm.PackageInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.List;
  
public class MainActivity extends AppCompatActivity {
    ListView listView;
    TextView text;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
          
        // initialise layout
        listView = findViewById(R.id.listview);
        text = findViewById(R.id.totalapp);
    }
  
    public void getallapps(View view) {
        // get list of all the apps installed
        List<PackageInfo> packList = getPackageManager().getInstalledPackages(0);
        String[] apps = new String[packList.size()];
        for (int i = 0; i < packList.size(); i++) {
            PackageInfo packInfo = packList.get(i);
            apps[i] = packInfo.applicationInfo.loadLabel(getPackageManager()).toString();
        }
        // set all the apps name in list view
        listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, apps));
        // write total count of apps available.
        text.setText(packList.size() + " Apps are installed");
    }
  
    @Override
    protected void onStart() {
        super.onStart();
    }
}


Kotlin




import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    lateinit var listView: ListView
    lateinit var text: TextView
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // initialise layout
        listView = findViewById(R.id.listview)
        text = findViewById(R.id.totalapp)
    }
  
    fun getAllApps() {
        // get list of all the apps installed
        val packList = packageManager.getInstalledPackages(0)
        val apps = arrayOfNulls<String>(packList.size)
        for (i in packList.indices) {
            val packInfo = packList[i]
            apps[i] = packInfo.applicationInfo.loadLabel(packageManager).toString()
        }
        // set all the apps name in list view
        listView.adapter = ArrayAdapter(this@MainActivity, android.R.layout.simple_list_item_1, apps)
        // write total count of apps available.
        text.text = packList.size.toString() + " Apps are installed"
    }
  
    override fun onStart() {
        super.onStart()
    }
}


Output: 

Method 3

Go to the MainActivity file and refer to the following code. Below is the code for the MainActivity file. Comments are added inside the code to understand the code in more detail.

Java




import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;
  
public class MainActivity extends AppCompatActivity {
    ListView listView;
    TextView text;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // initialise layout
        listView = findViewById(R.id.listview);
        text = findViewById(R.id.totalapp);
    }
  
    public void getallapps(View view) throws PackageManager.NameNotFoundException {
        final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
  
        // get list of all the apps installed
        List<ResolveInfo> ril = getPackageManager().queryIntentActivities(mainIntent, 0);
        List<String> componentList = new ArrayList<String>();
        String name = null;
        int i = 0;
  
        // get size of ril and create a list
        String[] apps = new String[ril.size()];
        for (ResolveInfo ri : ril) {
            if (ri.activityInfo != null) {
                // get package
                Resources res = getPackageManager().getResourcesForApplication(ri.activityInfo.applicationInfo);
                // if activity label res is found
                if (ri.activityInfo.labelRes != 0) {
                    name = res.getString(ri.activityInfo.labelRes);
                } else {
                    name = ri.activityInfo.applicationInfo.loadLabel(
                            getPackageManager()).toString();
                }
                apps[i] = name;
                i++;
            }
        }
        // set all the apps name in list view
        listView.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, apps));
        // write total count of apps available.
        text.setText(ril.size() + " Apps are installed");
    }
  
    @Override
    protected void onStart() {
        super.onStart();
    }
}


Kotlin




import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    lateinit var listView: ListView
    lateinit var text: TextView
      
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // initialise layout
        listView = findViewById(R.id.listview)
        text = findViewById(R.id.totalapp)
    }
  
    @Throws(PackageManager.NameNotFoundException::class)
    fun getAllApps() {
        val mainIntent = Intent(Intent.ACTION_MAIN, null)
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER)
  
        // get list of all the apps installed
        val ril = packageManager.queryIntentActivities(mainIntent, 0)
        val componentList: List<String> = ArrayList()
        lateinit var name: String
        var i = 0
  
        // get size of ril and create a list
        val apps = arrayOfNulls<String>(ril.size)
        for (ri in ril) {
            if (ri.activityInfo != null) {
                // get package
                val res = packageManager.getResourcesForApplication(ri.activityInfo.applicationInfo)
                // if activity label res is found
                name = if (ri.activityInfo.labelRes != 0) {
                    res.getString(ri.activityInfo.labelRes)
                } else {
                    ri.activityInfo.applicationInfo.loadLabel(packageManager).toString()
                }
                apps[i] = name
                i++
            }
        }
        // set all the apps name in list view
        listView.adapter = ArrayAdapter(this@MainActivity, android.R.layout.simple_list_item_1, apps)
        // write total count of apps available.
        text.text = ril.size.toString() + " Apps are installed"
    }
  
    override fun onStart() {
        super.onStart()
    }
}


Output:



Last Updated : 09 Feb, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads