2012-02-26 19 views
10

Cuando un usuario instala una aplicación de Android, se crea un ícono de iniciador en el menú de aplicaciones. Muchos usuarios con los que hablo esperan que cuando instalen una aplicación, un ícono aparezca automáticamente en su pantalla de inicio ("plataforma de lanzamiento").Instalar icono de iniciador en la pantalla de inicio una vez

Muchas aplicaciones logran esto de alguna manera. Mi preferencia sería tener una ventana en la instalación que le pregunte al usuario "¿Desea agregar un acceso directo?" Si eso no es posible, cualquier código que autoañade el atajo lo hará.

Android da un montón de código aquí: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/LauncherShortcuts.html Se implica que agregar este código (y el xml relacionado) a su proyecto hará el truco. Pero no tiene el efecto que quiero. Parece que el código proporcionado es pasivo, y necesito activarlo de alguna manera.

Así que mi pregunta es:

¿Cómo desencadenar la instalación de un acceso directo, y cómo puedo asegurarme de que suceda una sola vez, de preferencia se activa por algún tipo de evento "de instalación de aplicaciones"?

PD: Un factor que complica es que estoy construyendo mi aplicación usando PhoneGap, lo que significa que la actividad principal no es "Actividad" sino "DroidGap".

+1

Resulta que una aplicación instalada a través de Android Market instalará un acceso directo de iniciador automáticamente si incluye el permiso INSTALL_SHORTCUT. Pero no puede saber hasta que haya publicado su aplicación: incluso la instalación desde una APK que descarga a su teléfono a través de otros medios no funcionará. – Wytze

Respuesta

1

En el ejemplo, devuelve el intent en setResult(...). Creo que necesita ejecutar sendBroadcast(intent) para activar la instalación del acceso directo.

+0

Triada, gracias por este comentario. He intentado ejecutar sendBroadcast (intento) desde diferentes lugares tanto en App.java (la actividad principal) como en LauncherShortcuts.java. Sin resultados. – Wytze

+0

Hm ¿también tienes '' en tu 'AndroidManifest.xml'? – triad

+0

También noté que el código de ejemplo no llama a 'intent.setAction (Intent.ACTION_CREATE_SHORTCUT)', que también es necesario. – triad

0

La clase DroidGap amplía la actividad por lo que puede agregar el código del enlace que proporcionó para agregar un acceso directo.

+0

Simon, intenté agregar el código del enlace. Eso no funcionó. Incluí LauncherShortcuts.java y LauncherShortcuts.xml, pero no sucede nada cuando instalo mi aplicación. Quizás tiene una idea más específica que yo cuando dice "agregar el código del enlace". – Wytze

4
Intent shortcutIntent = new Intent(getApplicationContext(), HomeScreen.class);  
    shortcutIntent.setAction(Intent.ACTION_MAIN); 

    Intent addIntent = new Intent(); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AIMS ICD"); 
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.aims)); 
    addIntent.putExtra("duplicate", false); 
    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
    getApplicationContext().sendBroadcast(addIntent); 
Cuestiones relacionadas