Cómo hacer un lanzador de Android en Android Studio

1. Requisitos

Debe tener lo siguiente instalado y configurado en su máquina de desarrollo:

  • Android SDK y herramientas de plataforma
  • Eclipse IDE 3.7.2 o superior con el complemento ADT
  • un emulador o dispositivo Android con Android 2.2 o superior

Puede descargar el SDK y las herramientas de plataforma del portal para desarrolladores de Android.

2. Configuración del proyecto

Inicie Eclipse y cree un nuevo proyecto de aplicación para Android. Estoy nombrando la aplicación SimpleLauncher , pero puedes nombrarla como quieras. Asegúrate de usar un paquete único. La versión de SDK más baja que admite nuestro lanzador es Froyo y el SDK de destino es Jelly Bean .

Como no queremos crear una Activity , anule la selección de Crear Actividad . Haga clic en Finalizar para continuar.

3. Manifiesto del proyecto

El siguiente paso es modificar el archivo AndroidManifest.xml agregando dos actividades. La primera Activity muestra la pantalla de inicio. Llamémoslo HomeActivity como se muestra a continuación.

<actividad
android: name = “ah.hathi.simplelauncher.HomeActivity”
android: label = “Inicio del iniciador simple”
android: theme = “@ android: style / Theme.Wallpaper.NoTitleBar.Fullscreen”
android: launchMode = “singleTask”
android: stateNotNeeded = “true”
>

Al agregar las categorías android.intent.category.HOME y android.intent.category.DEFAULT al grupo de intent-filter , la Activity asociada se comporta como un iniciador y aparece como una opción cuando presiona el botón de inicio del dispositivo.

También debemos configurar launchMode en singleTask para asegurarnos de que el sistema mantenga una sola instancia de esta Activity en cualquier momento. Para mostrar el fondo de pantalla del usuario, configure el tema en Theme.Wallpaper.NoTitleBar.FullScreen .

La segunda Activity que necesitamos agregar muestra las aplicaciones que están instaladas en el dispositivo del usuario. También es responsable del lanzamiento de aplicaciones. No necesitamos ninguna configuración especial para esta Activity . AppsListActivity .

<actividad
android: name = “ah.hathi.simplelauncher.AppsListActivity”
android: theme = “@ android: style / Theme.NoTitleBar.Fullscreen”
>

4. Diseños de actividades

Cree un archivo XML para la clase HomeActivity en la carpeta res / layout del proyecto y asígnele el nombre activity_home.xml . El diseño tiene un solo Button que responde a los eventos de clic. Al hacer clic en el botón, el usuario pasa de la pantalla de inicio a la lista de aplicaciones.

<RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android"
xmlns: tools = “http://schemas.android.com/tools”
android: layout_width = “match_parent”
android: layout_height = “match_parent”
herramientas: contexto = “. HomeActivity”>

<Botón
android: id = “@ + id / apps_button”
android: layout_width = “wrap_content”
android: layout_height = “wrap_content”
android: layout_alignParentRight = “true”
android: layout_alignParentTop = “true”
android: layout_marginRight = “10dp”
android: layout_marginTop = “10dp”
android: text = “Mostrar aplicaciones”
android: onClick = “showApps”
/>

A continuación, cree un archivo XML para la clase AppsListActivity en la carpeta res / layout del proyecto y AppsListActivity el nombre activity_apps_list.xml . El diseño contiene un ListView que ocupa toda la pantalla.

<LinearLayout xmlns: android = "http://schemas.android.com/apk/res/android"
android: layout_width = “match_parent”
android: layout_height = “match_parent”
android: orientación = “vertical”>

<ListView
android: id = “@ + id / apps_list”
android: layout_width = “match_parent”
android: layout_height = “match_parent”
>

Finalmente, cree un tercer archivo XML en la misma ubicación y asígnele el nombre list_item.xml . Este archivo define el diseño de un elemento en ListView . Cada elemento de vista de lista representa una aplicación instalada en el dispositivo del usuario. Muestra el icono, la etiqueta y el nombre del paquete de la aplicación. Mostramos el ícono de la aplicación usando una instancia de ImageView e instancias de TextView para la etiqueta y el nombre del paquete.

<RelativeLayout xmlns: android = "http://schemas.android.com/apk/res/android"
android: layout_width = “match_parent”
android: layout_height = “match_parent”
android: padding = “10dp”
>

<ImageView
android: id = “@ + id / item_app_icon”
android: layout_width = “wrap_content”
android: layout_height = “wrap_content”
android: layout_alignParentLeft = “true”
android: layout_centerVertical = “true”
/>

<TextView
android: id = “@ + id / item_app_label”
android: layout_width = “wrap_content”
android: layout_height = “wrap_content”
android: layout_toRightOf = “@ + id / item_app_icon”
android: paddingLeft = “10dp”
/>

<TextView
android: id = “@ + id / item_app_name”
android: layout_width = “wrap_content”
android: layout_height = “wrap_content”
android: layout_below = “@ + id / item_app_label”
android: layout_toRightOf = “@ + id / item_app_icon”
android: paddingLeft = “10dp”
/>

5. Implementando las clases de actividad

HomeActivity

Con los diseños de la aplicación creados, es hora de crear las dos clases de Activity . Al crear las dos clases, asegúrese de que el nombre de cada clase coincida con el que especificó en el archivo de manifiesto del proyecto anteriormente.

Crea una nueva clase llamada HomeActivity y establece android.app.Activity como su superclase.

paquete ah.hathi.simplelauncher;

importar android.app.Activity;
importar android.content.Intent;
importar android.os.Bundle;
importar android.view.View;

clase pública HomeActivity extiende la actividad {

@Anular
vacío protegido onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_home);
}

public void showApps (Ver v) {
Intención i = nueva intención (esto, AppsListActivity.class);
startActivity (i);
}
}

En el método onCreate la clase, invocamos setContentView , pasando el diseño que creamos anteriormente. Puede recordar que agregamos un botón al diseño de activity_home que activa un método llamado showApps . Ahora necesitamos implementar ese método en la clase HomeActivity . La implementación es bastante simple, creamos un Intent para la clase AppsListActivity y lo AppsListActivity .

AppsListActivity

Cree otra clase de Activity llamada AppsListActivity y establezca android.app.Activity como su superclase. En el método onCreate la clase, invocamos setContentView , pasando el diseño de activity_apps_list que creamos anteriormente.

paquete ah.hathi.simplelauncher;

importar android.app.Activity;
importar android.content.Intent;
importar android.os.Bundle;
importar android.view.View;

AppsListActivity de clase pública extiende la actividad {

@Anular
vacío protegido onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_apps_list);
}

}

Aunque nuestro lanzador aún no haya terminado, puede guardar y ejecutar su aplicación en este momento. Cuando presiona el botón de inicio del dispositivo, debería ver una ventana emergente que le pregunta qué lanzador le gustaría usar.

Si elige Inicio de inicio simple , debería ver su nueva pantalla de inicio con un solo botón en la esquina superior derecha de la pantalla. También debería ver el fondo de pantalla actual de su dispositivo.

Regrese a Eclipse y cree una clase llamada AppDetail que contendrá los detalles de una aplicación, el nombre del paquete, la etiqueta y el ícono de la aplicación. La interfaz es bastante básica como puedes ver a continuación.

paquete ah.hathi.simplelauncher;

importar android.graphics.drawable.Drawable;

AppDetail de clase pública {
Etiqueta CharSequence;
Nombre de secuencia de caracteres;
Icono dibujable;
}

6. Obteniendo aplicaciones

En el método loadApps de la clase AppsListActivity , utilizamos el método queryIntentActivities de la clase PackageManager para obtener todos los Intents que tienen una categoría de Intent.CATEGORY_LAUNCHER . La consulta devuelve una lista de las aplicaciones que puede iniciar un iniciador. Recorremos los resultados de la consulta y agregamos cada elemento a una lista llamada apps . Eche un vistazo al siguiente fragmento de código para obtener una aclaración.

administrador privado de PackageManager;
Lista privada aplicaciones;
privado vacío loadApps () {
manager = getPackageManager ();
aplicaciones = nueva ArrayList ();

Intención i = nueva intención (Intent.ACTION_MAIN, nulo);
i.addCategory (Intent.CATEGORY_LAUNCHER);

Lista availableActivities = manager.queryIntentActivities (i, 0);
para (ResolveInfo ri: availableActivities) {
Aplicación AppDetail = nueva AppDetail ();
app.label = ri.loadLabel (gerente);
app.name = ri.activityInfo.packageName;
app.icon = ri.activityInfo.loadIcon (administrador);
apps.add (aplicación);
}
}

7. Visualización de la lista de aplicaciones

Con la variable de apps que contiene todos los detalles que necesitamos, podemos mostrar la lista de aplicaciones usando la clase ListView . Creamos un ArrayAdapter simple y ArrayAdapter su método getView para representar los elementos de la lista. Luego asociamos el ListView con el adaptador.

lista privada de ListView;
private void loadListView () {
list = (ListView) findViewById (R.id.apps_list);

Adaptador ArrayAdapter = nuevo ArrayAdapter (esto,
R.layout.list_item,
aplicaciones) {
@Anular
public View getView (int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater (). inflate (R.layout.list_item, null);
}

ImageView appIcon = (ImageView) convertView.findViewById (R.id.item_app_icon);
appIcon.setImageDrawable (apps.get (position) .icon);

TextView appLabel = (TextView) convertView.findViewById (R.id.item_app_label);
appLabel.setText (apps.get (posición) .label);

TextView appName = (TextView) convertView.findViewById (R.id.item_app_name);
appName.setText (apps.get (position) .name);

devuelve convertView;
}
};

list.setAdapter (adaptador);
}

8. Escuchando clics

Cuando el usuario hace clic en un elemento en ListView , nuestro lanzador debe iniciar la aplicación correspondiente. Usamos el método getLaunchIntentForPackage de la clase PackageManager para crear una Intent con la que iniciamos la aplicación. Eche un vistazo al siguiente fragmento de código.

privado vacío addClickListener () {
list.setOnItemClickListener (nuevo AdapterView.OnItemClickListener () {
@Anular
public void onItemClick (AdapterView av, View v, int pos,
ID largo) {
Intención i = manager.getLaunchIntentForPackage (apps.get (pos) .name.toString ());
AppsListActivity.this.startActivity (i);
}
});
}

9. Poniendo todo junto

Para que todo funcione en conjunto, necesitamos invocar loadApps , loadListView y addClickListener en el método onCreate de la clase AppsListActivity como se muestra a continuación.

vacío protegido onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_apps_list);

loadApps ();
loadListView ();
addClickListener ();
}

Compila y ejecuta tu aplicación una vez más para ver el resultado. Ahora debería poder ver las aplicaciones que se pueden iniciar al hacer clic en el botón en la pantalla de inicio de nuestro iniciador. Haga clic en un elemento para iniciar la aplicación correspondiente.

More Interesting

¿Cuáles son los mejores juegos gratuitos para Android de 2016?

¿Existe una herramienta gratuita que muestre para qué palabras clave está clasificada mi aplicación Android # 1 (2, 3, 4, etc.)?

¿Cómo podemos aceptar pagos con tarjeta presente (transacciones de deslizamiento) en nuestra aplicación nativa de Android?

¿Es aconsejable actualizar las aplicaciones en Android?

Cómo obtener datos del sitio web a Android

¿Funcionan los recordatorios "Califícame" en las aplicaciones móviles?

¿Podemos hacer una aplicación de Android usando html5?

¿Cuál debería ser la arquitectura de mi aplicación de Android?

¿Los usuarios de iPhone tienen características adicionales en WhatsApp en comparación con los usuarios de Android?

Cómo crear una aplicación de noticias en Android Studio y actualizar su contenido diariamente

Cómo agregar un compilador de Java en una aplicación de Android

¿Cuál debería ser el número óptimo y la ubicación de los anuncios en las aplicaciones de Android para maximizar los ingresos sin frustrar al usuario?

¿Cuál es la mejor manera de comercializar una aplicación a un operador para que la preinstalen en sus teléfonos? Ya sea en iOS o Android

¿Cómo arreglar "Screen Overlay Detected" en cualquier dispositivo Android? Cada vez que quiero cambiar el permiso de la aplicación, aparece el mensaje "Para cambiar esta configuración de permiso, primero debe desactivar la superposición de pantalla desde Configuración> Aplicaciones".

¿Cuáles son las aplicaciones de Android más bellamente diseñadas?