2010-05-29 16 views
9

Acabo de crear mi propia "Página de inicio" para reemplazar la versión de android o Sense.anulando la tecla de inicio Pulsación larga en una categoría. Actividad de INICIO

Todo funciona bien y obtengo todo lo que quiero. Mi único problema es reemplazar presionar prolongadamente la tecla de inicio (que generalmente muestra las últimas 6 actividades que iniciaste) con mi propio iniciador.

puedo reemplazar con éxito la pulsación larga de la tecla MENU con este código:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

//Log.i(TAG,"Keycode: "+keyCode); 

if (keyCode == KeyEvent.KEYCODE_MENU) { 
    // this tells the framework to start tracking for 
    // a long press and eventual key up. it will only 
    // do so if this is the first down (not a repeat). 

    event.startTracking(); 
    return true; 
} 
(...) 

y esta parte parte para la pulsación larga:

@Override 
    public boolean onKeyLongPress(int keyCode, KeyEvent event) { 

     //Log.i(TAG,"LONG"+keyCode); 
     Toast.makeText(Launcher.this,"LONG "+keyCode, Toast.LENGTH_SHORT).show(); 

     if (keyCode == KeyEvent.KEYCODE_MENU) { 
     (...) 

Pero el problema es que yo no era capaz para reemplazar KeyEvent.KEYCODE_MENU con KeyEvent.KEYCODE_HOME

¿hay algo bloqueado en el código que evite que el usuario use una pulsación larga de Inicio?

Muchas gracias por toda la información que me daría.

Respuesta

8

Todo lo que he leído nunca estados que esto no se puede hacer ... Aquí hay un post en principiantes Android, donde hice una pregunta muy similar:

http://groups.google.com/group/android-beginners/browse_thread/thread/d8cdcd1c52d79ef1/0f4b184da6f248a9?lnk=gst&q=home+key#0f4b184da6f248a9

Sin embargo, he llegado recientemente a través de una aplicación que le permite iniciarla con éxito tocando dos veces la tecla de inicio, debe haber algo que se pueda hacer. Miré ese enfoque por un tiempo pero no pude hacerlo funcionar. Ahora que sé que alguien lo descubrió Voy a tomar otra puñalada en ella ....

EDITAR mientras se sobreescriben un largo prensa del botón de inicio no puede ser hecho, he encontrado una manera para implementar con éxito una presión doble del botón de inicio. La idea general de esto es como sigue:

  1. Haga su acto aplicación como una aplicación de reemplazo de su casa (Mira a la aplicación principal de ejemplo en los ejemplos de SDK)
  2. Permitir una forma en su aplicación para especificar una aplicación para el hogar para usar (es bastante sencillo presentarle al usuario una lista de aplicaciones de reemplazo para el hogar)
  3. Al presionar el botón de inicio, inicie un temporizador.
  4. Si el temporizador expira, inicie la aplicación en casa
  5. Si el usuario pulsa la tecla de inicio por segunda vez ante el temporizador se detiene, el lanzamiento de su aplicación

En esencia, la actividad en el hogar de reemplazo no hace nada más que lanzar la aplicación de inicio real especificada por el usuario o iniciar su aplicación ... Nunca muestra su propia IU.

He encontrado que esto funciona bastante bien, y en realidad tengo una aplicación publicada en Android Market que hace esto. Si desea verlo en acción, se llama "Inicio rápido" y el nombre del editor aparece como "MagouyaWare"

Espero que esto ayude!

+0

Así que le parecieron algo nuevo? ¿Qué aplicación era? –

0

Encontré una manera de abordar la tecla HOME.Para su aplicación establece el manifiesto como

<action android:name="android.intent.action.MAIN" />       <category android:name="android.intent.category.HOME" />        <category android:name="android.intent.category.DEFAULT" />       <category android:name="android.intent.category.MONKEY"/> Now ur application is an alternate Launcher application. 

Utilice el BAD, y desactivar el lanzador de aplicaciones usando el gestor de paquetes

pm com.android.launcher2 desactivar.

Ahora, la pulsación de la tecla de inicio siempre permanecerá en la misma pantalla.

En realidad no hay mucho código. Trataré de explicarlo si ayuda. Para la aplicación del andriod en el archivo de manifiesto, por lo general, mantener el filtro intención como: -

instaed debemos hacer que el filtro de la intención como: -


Este es el mismo filtro de intención que el de LAuncher.

Ahora tenemos una aplicación launchjer alternativa. Para que sea la única aplicación de inicio, tenemos que desinstalar/deshabilitar la aplicación de iniciador existente (iniciador predeterminado en Android).

Para esto tenemos que conectar el dispositivo/emulador e iniciar el adb (puente de depuración de Android). A continuación, siga los siguientes pasos: -

adb shell

paquetes lista pm // Esto mostrará una lista de todos los paquetes instalados com.android.launcher

pm desactivar // Esto desactivará el lanzador de aplicaciones.

Reinicio.

+0

puede escribir una guía en su blog, para que le dé este enlace. He encontrado que en muchos enlaces da la respuesta, creo que puede ayudar a muchas personas a incluirme. Gracias – pengwang

+0

Le di una calificación negativa porque no responde la pregunta original. La pregunta original era cómo reemplazar la funcionalidad de una pulsación larga de la tecla de inicio. Esto no se puede hacer. Además, recomendaría no deshabilitar la aplicación de inicio predeterminada. El hecho de que se pueda hacer no significa que deba hacerse. La mejor manera de hacer lo que amiekuser sugiere es usar el método incorporado de Android para configurar una aplicación predeterminada. Si tiene más de una aplicación de reemplazo del hogar y presiona la tecla de inicio, aparecerá un cuadro de diálogo que le preguntará qué aplicación usar (y le permite configurarla de manera predeterminada) – Justin

3

Puede registrar la actividad falso para el botón HOME pulsación larga

añadiendo a manifestar:

<intent-filter> 
    ... 
    <action android:name="android.intent.action.ASSIST" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 
+0

¡Genial! Funciona en una Samsung Galaxy View. Funciona igual que . Me gustaría tener lo mismo para una pulsación larga en el botón de tarea ... – kmas

Cuestiones relacionadas