Cómo agregar el acceso directo de la aplicación a la pantalla de inicio

Sé que no está documentado y no funciona en todos los dispositivos, pero veo más y más aplicaciones colocando sus accesos directos en la pantalla de inicio después de que se instaló. Encontró un montón de trozos de código cómo hacerlo, pero para mí no encajan juntos. Esto es lo que conseguí por ahora.

  1. Necesita un permiso en el manifiesto.

    <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 
  2. Crear una Intención de actividad que se debe llamar. Ex (desde cgeek):

     Intent shortcutIntent = new Intent(); shortcutIntent.setClassName("com.example.androidapp", "SampleIntent"); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
  3. Crear acceso directo

     Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Shortcut Name"); addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(context, R.drawable.icon)); addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); context.sendBroadcast(addIntent); 

Mis preguntas son: ¿Dónde debería ir este código para que el acceso directo se agregue después de instalar .apk? He intentado este código en la actividad de lanzador, crea atajo roto (otra historia) cada vez que se inicia la aplicación.

Por lo que sé, que es una característica opcional de la aplicación de mercado, no de las aplicaciones en sí. Por diseño una aplicación no recibe una emisión sobre sí mismo que está siendo instalada. Si los códigos funcionan, lo más pronto posible ejecutarlo es la primera vez que el usuario inicia la aplicación. Dicho eso:

Hacer. No. Automáticamente. Crear. App. Accesos directos.

Nunca.

No usurpe el diseño de interfaz de usuario del usuario.

Estoy de acuerdo con la respuesta aceptada actualmente, que usted no debe hacer esto recibiendo una emisión o tiempo de instalación. No haga nada sin la intervención del usuario o el permiso.

Sin embargo, si proporciona un botón en su aplicación, lo pondría en los botones OnClick handler. A continuación, agregaría un acceso directo cuando el usuario selecciona la opción "agregar acceso directo".

Esto puede ser posible añada el siguiente código a su actividad principal en el método oncreate

  Intent HomeScreenShortCut= new Intent(getApplicationContext(), MainActivity.class); HomeScreenShortCut.setAction(Intent.ACTION_MAIN); HomeScreenShortCut.putExtra("duplicate", false); //shortcutIntent is added with addIntent Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName"); addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher)); addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(addIntent); 

Agregar agrega este permiso a tu manifiesto

  <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 

He utilizado este código para crear 3 accesos directos en la página principal:

 Intent HomeScreenShortCut= new Intent(getApplicationContext(), MainActivity.class); HomeScreenShortCut.setAction(Intent.ACTION_MAIN); HomeScreenShortCut.putExtra("duplicate", false); //shortcutIntent is added with addIntent Intent addIntent = new Intent(); addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, HomeScreenShortCut); addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "AppName"); addIntent.putExtra( Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext( getApplicationContext(), R.drawable.ic_launcher ) ); addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); getApplicationContext().sendBroadcast(addIntent); 

Existen deficiencias en el mismo método anterior. Tome el acceso directo a la pantalla de inicio.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.