-1

This is my source code below which shows all installed system applications. I want to show only selected applications like only 5 applications which name I provite not show all applications what do I do?? please help me

       public class ListInstalledApps extends Activity implements OnItemClickListener {

 /* whether or not to include system apps */
 private static final boolean INCLUDE_SYSTEM_APPS = false;

 private ListView mAppsList;
 private AppListAdapter mAdapter;
 private List<App> mApps;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  mAppsList = (ListView) findViewById(R.id.appslist);
  mAppsList.setOnItemClickListener(this);

  mApps = loadInstalledApps(INCLUDE_SYSTEM_APPS);

  mAdapter = new AppListAdapter(getApplicationContext());
  mAdapter.setListItems(mApps);
  mAppsList.setAdapter(mAdapter);

  new LoadIconsTask().execute(mApps.toArray(new App[]{}));
 }

  @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

  final App app = (App) parent.getItemAtPosition(position);

  AlertDialog.Builder builder = new AlertDialog.Builder(this);

  String msg = app.getTitle() + "\n\n" + 
     "Version " + app.getVersionName() + " (" +
     app.getVersionCode() + ")" +
     (app.getDescription() != null ? ("\n\n" + app.getDescription()) : "");

  builder.setMessage(msg)
  .setCancelable(true)
  .setTitle(app.getTitle())
  .setIcon(mAdapter.getIcons().get(app.getPackageName()))
  .setPositiveButton("Launch", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int id) {
        // start the app by invoking its launch intent
        Intent i = getPackageManager().getLaunchIntentForPackage(app.getPackageName());
        try {
           if (i != null) {
              startActivity(i);
           } else {
              i = new Intent(app.getPackageName());
              startActivity(i);
           }
        } catch (ActivityNotFoundException err) {
           Toast.makeText(ListInstalledApps.this, "Error launching app", 
  Toast.LENGTH_SHORT).show();
        }
     }
  })
  .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int id) {
        dialog.cancel();
     }
  });
  AlertDialog dialog = builder.create();
  dialog.show();
}

 /**
  * Uses the package manager to query for all currently installed apps which are put  
 into beans and returned
 * in form of a list.
 * 
 * @param includeSysApps whether or not to include system applications
 * @return a list containing an {@code App} bean for each installed application 
 */
 private List<App> loadInstalledApps(boolean includeSysApps) {
   List<App> apps = new ArrayList<App>();

  // the package manager contains the information about all installed apps
  PackageManager packageManager = getPackageManager();

  List<PackageInfo> packs = packageManager.getInstalledPackages(0); 
 //PackageManager.GET_META_DATA 

  for(int i=0; i < packs.size(); i++) {
     PackageInfo p = packs.get(i);
     ApplicationInfo a = p.applicationInfo;
     // skip system apps if they shall not be included
     if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) {
        continue;
     }
     App app = new App();
     app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
     app.setPackageName(p.packageName);
     app.setVersionName(p.versionName);
     app.setVersionCode(p.versionCode);
     CharSequence description = p.applicationInfo.loadDescription(packageManager);
     app.setDescription(description != null ? description.toString() : "");
     apps.add(app);
  }
  return apps;
  }

 /**
 * An asynchronous task to load the icons of the installed applications.
 */
  private class LoadIconsTask extends AsyncTask<App, Void, Void> {
  @Override
  protected Void doInBackground(App... apps) {

     Map<String, Drawable> icons = new HashMap<String, Drawable>();
     PackageManager manager = getApplicationContext().getPackageManager();

     for (App app : apps) {
        String pkgName = app.getPackageName();
        Drawable ico = null;
        try {
           Intent i = manager.getLaunchIntentForPackage(pkgName);
           if (i != null) {
              ico = manager.getActivityIcon(i);
           }
        } catch (NameNotFoundException e) {
           Log.e("ERROR", "Unable to find icon for package '" + pkgName + "': " + 
 e.getMessage());
        }
        icons.put(app.getPackageName(), ico);
     }
     mAdapter.setIcons(icons);

     return null;
  }

  @Override
  protected void onPostExecute(Void result) {
     mAdapter.notifyDataSetChanged();
  }
 }

 }
Irfan DANISH
  • 8,349
  • 12
  • 42
  • 67

2 Answers2

0

try this -

provide the package_name of application you want to show and compare it with package name present in device

//for browser application given package name as com.android.browser

            for (int i = 0; i < packs.size(); i++) {
       if ((p.packageName).equals("com.android.browser")) {
            App app = new App();
          app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
        app.setPackageName(p.packageName);
        app.setVersionName(p.versionName);
        app.setVersionCode(p.versionCode);
       CharSequence description = p.applicationInfo.loadDescription(packageManager);
       app.setDescription(description != null ? description.toString() : "");
       apps.add(app);
  }
}

hope this will help you.

Shree
  • 787
  • 8
  • 23
0

You need a screening process to see if the application is in the list of your mentioned applications store your entered app package name in array and see if the current app is in that list if it is there add it to the list and then display listView using this list

private List<App> loadInstalledApps(boolean includeSysApps) {
   List<App> apps = new ArrayList<App>();

  // the package manager contains the information about all installed apps
  PackageManager packageManager = getPackageManager();

  List<PackageInfo> packs = packageManager.getInstalledPackages(0); 
 //PackageManager.GET_META_DATA 

  for(int i=0; i < packs.size(); i++) {
     PackageInfo p = packs.get(i);
     ApplicationInfo a = p.applicationInfo;
     // skip system apps if they shall not be included
     if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) {
        continue;
     }
     App app = new App();
     app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
     app.setPackageName(p.packageName);
     app.setVersionName(p.versionName);
     app.setVersionCode(p.versionCode);
     CharSequence description = p.applicationInfo.loadDescription(packageManager);
     app.setDescription(description != null ? description.toString() : "");

if( Arrays.asList(appliation1.packageName,appliation2.packageName,appliation3.packageName).contains(p.packageName) )  
     apps.add(app);
  }
  return apps;
  }
Aashish Bhatnagar
  • 2,595
  • 2
  • 22
  • 37