1. Crear un diseño de aplicación en xml
activity_main.xml
Como puede ver en la captura de pantalla adjunta, crearemos un ListView para mostrar todas las aplicaciones instaladas en Android.
http://schemas.android.com/apk/res/android" ; android: layout_width =” fill_parent “android: layout_height =” fill_parent “android: orientación =” vertical “>
snippet_list_row.xml
El adaptador ListView está utilizando este diseño para representar los detalles de la aplicación. Muestra el icono de la aplicación, el nombre de la aplicación y el paquete de la aplicación.
http://schemas.android.com/apk/res/android" ; android: layout_width =” fill_parent “android: layout_height = “wrap_content”>
2. Escribir clase de Java
AllAppsActivity.java
Esta es la clase de aplicación principal que se utiliza para inicializar y enumerar las aplicaciones instaladas. Como obtener la lista de detalles de la aplicación de PackageManage es una tarea de larga duración, lo haremos en AsyncTask. Además, esta clase está utilizando el Adaptador personalizado “ApplicationAdapter” para ListView personalizado.
paquete com.javatechig.listapps; import java.util.ArrayList; import java.util.List; importar android.app.AlertDialog; importar android.app.ListActivity; importar android.app.ProgressDialog; importar android.content.ActivityNotFoundException; importar android.content.DialogInterface; importar android.content.Intent; importar android.content.pm.ApplicationInfo; importar android.content.pm.PackageManager; importar android.net.Uri; importar android.os.AsyncTask; importar android.os.Bundle; importar android.view.Menu; importar android.view.MenuInflater; importar android.view.MenuItem; importar android.view.View; importar android.widget.ListView; importar android.widget.Toast; clase pública AllAppsActivity extiende ListActivity {private PackageManager packageManager = null; Lista privada applist = null; Adaptador de aplicación privado listadaptor = nulo; @Override public void onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); packageManager = getPackageManager (); nuevas LoadApplications (). execute (); } public boolean onCreateOptionsMenu (Menú de menú) {MenuInflater inflater = getMenuInflater (); inflater.inflate (R.menu.menu, menú); volver verdadero; } public boolean onOptionsItemSelected (elemento MenuItem) {resultado booleano = verdadero; switch (item.getItemId ()) {case R.id.menu_about: {displayAboutDialog (); descanso; } predeterminado: {result = super.onOptionsItemSelected (item); descanso; }} devolver resultado; } private void displayAboutDialog () {final AlertDialog.Builder builder = new AlertDialog.Builder (this); builder.setTitle (getString (R.string.about_title)); builder.setMessage (getString (R.string.about_desc)); builder.setPositiveButton (“Saber más”, nuevo DialogInterface.OnClickListener () {public void onClick (DialogInterface dialog, int id) {Intent browserIntent = new Intent (Intent.ACTION_VIEW, Uri.parse (” http: //javatechig.com" ; )); startActivity (browserIntent); dialog.cancel ();}}); builder.setNegativeButton (“No Thanks!”, new DialogInterface.OnClickListener () {public void onClick (DialogInterface dialog, int id) {dialog.cancel ( );}}); builder.show ();} @Override Void protegido onListItemClick (ListView l, View v, int position, long id) {super.onListItemClick (l, v, position, id); ApplicationInfo app = applist. get (position); try {Intent intent = packageManager .getLaunchIntentForPackage (app.packageName); if (null! = intent) {startActivity (intent);}} catch (ActivityNotFoundException e) {Toast.makeText (AllAppsActivity.this, e. getMessage (), Toast.LENGTH_LONG) .show ();} catch (Exception e) {Toast.makeText (AllAppsActivity.this, e.getMessage (), Toast.LENGTH_LONG) .show ();}} Li privado st checkForLaunchIntent (List list) {ArrayList applist = new ArrayList (); for (ApplicationInfo info: list) {try {if (null! = packageManager.getLaunchIntentForPackage (info.packageName)) {applist.add (info); }} catch (Excepción e) {e.printStackTrace (); }} volver a la lista de aplicaciones; } clase privada LoadApplications extiende AsyncTask {private ProgressDialog progress = null; @Override protegido Void doInBackground (Void … params) {applist = checkForLaunchIntent (packageManager.getInstalledApplications (PackageManager.GET_META_DATA)); listadaptor = nuevo ApplicationAdapter (AllAppsActivity.this, R.layout.snippet_list_row, applist); volver nulo; } @Override protected void onCancelled () {super.onCancelled (); } @Override protected void onPostExecute (resultado vacío) {setListAdapter (listadaptor); progress.dismiss (); super.onPostExecute (resultado); } @Override protected void onPreExecute () {progress = ProgressDialog.show (AllAppsActivity.this, null, “Cargando información de la aplicación …”); super.onPreExecute (); } @Override protected void onProgressUpdate (Vacío … valores) {super.onProgressUpdate (valores); }}}