Pregunta

He estado trabajando en un reemplazo para el stock de coches Home aplicación para un poco, y estoy totalmente confundido sobre cómo anular el botón de Inicio para que mi aplicación se pondrá de nuevo al primer plano cada vez que el teléfono está acoplado. Esta es la forma en que funciona hogar del coche, así que debe haber una manera.

Parece que BroadcastReceivers no va a funcionar, porque la intención de que se emite cada vez que se pulsa el botón de inicio seguirá siendo la causa de la aplicación de pantalla de inicio por defecto para el lanzamiento; No puedo evitarlo. Puedo anular el botón de Inicio desde dentro de mi aplicación, pero eso no me hace bien ya que esta tiene que trabajar cuando el usuario está fuera de mi aplicación. Hogar del coche también no hace nada extraño como conjunto a sí misma como la aplicación de pantalla de inicio por defecto mientras se está ejecutando (he comprobado la Logcat para asegurarse).

He estado muy latía la cabeza contra la pared en esto. ¿Alguien tiene alguna idea, o puede que al menos me punto en la dirección correcta?

¿Fue útil?

Solución

Bueno, después de muchos meses he encontrado por fin la respuesta a esta pregunta. La clave es la "android.dock_home" elemento de metadatos, que se encuentra aquí:

http://developer.android.com/reference/android/ contenido / Intent.html # METADATA_DOCK_HOME

Al utilizar esto en su AndroidManifest.xml, puede hacer que su aplicación muelle convertido en la aplicación casa temporalmente. Para ello, agregue esta línea a la AndroidManifest.xml dentro de las etiquetas de actividad para la actividad de las aplicaciones dock:

<meta-data android:name="android.dock_home" android:value="true" />

Si el valor se establece en true, siempre y cuando el teléfono está atracado en el botón Inicio, regresará a la aplicación muelle. Después de desacoplamiento, el botón de inicio le llevará de nuevo a su aplicación para casa normal.

Otros consejos

Por desgracia, no hay ninguna manera en las API públicas para anular el botón de Inicio sin que el usuario confirme la misma.

Su mejor opción sería implementar una Intención CATEGORY_HOME. Esto significa que cuando un usuario pulsa Inicio serían presentados con la opción de ejecutar el estándar de Inicio o en la suya y hacer suyo el valor por defecto si querían.

Cuando se puso en marcha su aplicación, a continuación, puede comprobar si el teléfono estaba atracado. Si el teléfono no está acoplado, a continuación, podría abrir la pantalla de inicio estándar y cerca de su aplicación antes de que aparezca nada.

Es necesario el filtro correcto en su intento manifiesto de la aplicación se inicie automáticamente al acoplar el teléfono. Consulte el http://developer.android.com/reference/android/ contenido / Intent.html # CATEGORY_CAR_DOCK por la información.

He encontrado una manera de hacer frente tecla INICIO. Para su aplicación ajustar 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"/> 

Ahora ur aplicación es una aplicación alternativa Launcher.

El uso del ADB, y desactivar el lanzador de aplicaciones usando el gestor de paquetes

pm desactivar com.android.launcher2.

Ahora, la pulsación de tecla Inicio se laways permanecer en la misma pantalla.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top