2012-02-17 18 views
7

¿Existe alguna manera de determinar si existe un atajo de pantalla de inicio en particular ?¿Cómo determinar si existe un acceso directo en la pantalla de inicio?

Mi aplicación instala un acceso directo en la pantalla de inicio en el dispositivo tiempo de inicio bajo ciertas condiciones y no quiero que aparezcan accesos directos duplicados. Tampoco quiero que aparezcan mensajes de Toast diciendo "Acceso directo creado" o "Acceso directo ya existe" cada vez que se inicia el dispositivo . He encontrado un Intent Extra documentado llamado EXTRA_SHORTCUT_DUPLICATE que evitará que se instalen accesos directos duplicados desde pero el iniciador todavía muestra el "Acceso directo ya existe " Mensaje de toast. Prefiero no confiar en este Intento no intencionado si hay una técnica compatible para esto.

+1

+1 sobre esta cuestión, me preguntó una análoga: http://stackoverflow.com/questions/9452121/install-launcher-icon-in-home-screen-once. Realmente me gustaría una forma de instalar el acceso directo cuando el usuario instala la aplicación o cuando el usuario elige de forma activa una ventana emergente proporcionada por la aplicación. – Wytze

Respuesta

0

¿No es ese tipo de intrusión? ¿Por qué no solo agregarlo una vez y dejar que el usuario decida si quiere conservarlo o no?

+1

Acepto, agregar el atajo solo una vez es más que suficiente. Creo que Asfman tiene la misma idea y, como yo, solo puede encontrar el código donde está instalado el icono en el evento onCreate (es decir, cada vez que se ejecuta la aplicación). – Wytze

+0

¡OP quiere poder determinar si ya está allí! "Solo agregarlo una vez" todavía le dará el brindis de "Acceso directo ya existe" si el usuario lo colocó allí mismo ** antes ** él inicia la aplicación. Lo más inteligente que hay que hacer aquí es verificar primero si ya hay un atajo y si no hay uno, entonces puedes agregarlo automáticamente (o preguntar al usuario si quiere que agregues uno). Y, no, no es intrusivo. –

+0

las versiones más nuevas de Android agregarán accesos directos al iniciador automáticamente cuando se instale una aplicación. Si elimino ese acceso directo, inicio la aplicación y el acceso directo está de vuelta, esto me obligará a eliminarlo de nuevo. Si agrega un acceso directo cada vez que uso la aplicación (porque sigo quitándola), dejaré de usar la aplicación. Permita que los usuarios controlen su iniciador y su pantalla de inicio, no intente controlarlo desde su aplicación. Es intrusivo intentar modificar otra actividad y el sandboxing lo impide por una buena razón. – edthethird

0

Cuando su aplicación crea un acceso directo, configure "verdadero" para un booleano y guárdelo en un almacenamiento (por ejemplo, archivo pequeño o preferencias compartidas). Compruebe su valor cuando su aplicación intente crear un acceso directo.

+0

Esto solo indicará si su aplicación creó el acceso directo o no. No le dirá si el usuario ha puesto el atajo en la pantalla de inicio, ni le dirá si el usuario ha eliminado el atajo de la pantalla de inicio. –

-1
**// Checking if ShortCut was already added 
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
     boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean("PREF_KEY_SHORTCUT_ADDED", false); 
     if (shortCutWasAlreadyAdded) return; 
     Intent shortcutIntent = new Intent(getApplicationContext(), MainActivity.class); 
     shortcutIntent.setAction(Intent.ACTION_MAIN); 
     Intent addIntent = new Intent(); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "SBM"); 
     addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_launcher)); 
     addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
     sendBroadcast(addIntent); 
     // Remembering that ShortCut was already added 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putBoolean("PREF_KEY_SHORTCUT_ADDED", true); 
     editor.commit();** 
Cuestiones relacionadas