Akhilesh Sk Akhilesh Sk - 1 year ago 105
Android Question

How to get the list of all non system apps in android

I am developing an application, in which i want to get the list of all non system apps. Here is my code part:

TextView tv = new TextView(this);

ActivityManager actvityManager = (ActivityManager)
this.getSystemService( ACTIVITY_SERVICE );
PackageManager pm = this.getPackageManager();
List<PackageInfo> list =pm.getInstalledPackages(0);

for(int i=0;i<list.size();i++)
System.out.println("list"+i+" "+list.get(i));

for(PackageInfo pi : list)
ApplicationInfo ai=pm.getApplicationInfo(pi.packageName, 0);

if (ai.sourceDir.startsWith("/data/app/"))
tv.setText(ai.className);// non system apps
System.out.println("system apps");// system apps
catch(Exception e)


but it showing, all the app as system apps

Answer Source

If an Application is a non-system application it must have a launch Intent by which it can be launched. If the launch intent is null then its a system App.

Example of System Apps: "com.android.browser.provider", "com.google.android.voicesearch".

For the above apps you will get NULL when you query for launch Intent.

PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo packageInfo:packages){
    if( pm.getLaunchIntentForPackage(packageInfo.packageName) != null ){
                String currAppName = pm.getApplicationLabel(packageInfo).toString();
               //This app is a non-system app
        //System App
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download