2011-04-27 14 views
27

En mi aplicación tengo la opción de iniciar la navegación al PDI seleccionado. Básicamente lo que quiero es lanzar un navegador paso a paso desde mi aplicación. El problema es que no sé qué navegador (si lo hay) está instalado.Propósito de iniciar una actividad de navegación

Entonces, la pregunta es cómo iniciar un intento mostrando primero una lista de actividades adecuadas para la navegación del usuario, permitiéndole elegir cuál le gustaría usar. También sería bueno encontrar una forma de pasar parámetros adicionales a la actividad seleccionada (esto me parece un problema, ya que las diferentes aplicaciones de navegación usan diferentes nombres para sus extras, supongo).

En caso de que no esté claro: estoy buscando una manera de MOSTRAR UNA LISTA DE APLICACIONES CONVENIENTES PARA LA NAVEGACIÓN CON LA OPCIÓN DE HACER UNA PREDETERMINADA.

EDIT: Encuentra aquí la función Try aplicación http://datamoil.blogspot.com/2011/04/android-universal-intent-to-start.html

Respuesta

21

La mala noticia es que no es un URI Intención estándar para la navegación.

Sí, existen los URI de google.navigation y una aplicación puede elegir admitirlo.

La mejor solución que se me ocurre es:

  • comprobar explícitamente para aplicaciones conocidas
  • Implícitamente comprobar si hay aplicaciones enganchando google.navigation: y quizá geo: (pero también te dan un mapa aplicaciones)

puede enumerar los posibles objetivos implícitos utilizando PackageManage.queryIntentActivities

+0

Lamentablemente, tiene razón.Seguí tu sugerencia y la implementé. No es la solución más elegante, sin embargo funciona y hace más o menos lo que esperaba. –

12

:

Intent intent = new Intent(Intent.ACTION_VIEW, 
    Uri.parse("google.navigation:q=New+York+NY")); 
startActivity(intent); 
+0

Gracias por el esfuerzo, eso no es lo que estoy buscando. Google Navigation solo funciona en los EE. UU. Y no es necesariamente la aplicación de navegación preferida. Creo que estaba claro en mi pregunta que estoy buscando una manera de MOSTRAR UNA LISTA DE APLICACIONES ADECUADAS PARA LA NAVEGACIÓN. –

+2

Todo depende de qué filtros de intención están usando las aplicaciones de navegación. AFAIK no hay una CATEGORÍA específica para los intentos de navegación. Las aplicaciones de navegación que tengo en mi teléfono captan la intención que acabo de publicar. Entonces cuando lo llamo, obtengo una lista de diferentes aplicaciones, no solo de navegación de google. – pumpkee

+2

Cada aplicación de navegación inteligente debe registrarse para este propósito, porque es la que mapea las llamadas cuando elige una dirección y hace clic en navegar hacia. – pumpkee

5

En primer lugar he utilizado en mi método onTap dentro oyente del botón:

Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("google.navigation:q=New+York+NY")); 
mContext.startActivity(i); 

A continuación, en el manifiesto sólo tiene que utilizar:

<activity android:name=".LaunchGPS" android:screenOrientation="portrait"> 
    <intent-filter>  
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

Esto abrirá cualquier aplicación Navigator su teléfono tiene como VZ Navigagtor, Google o lo que sea el teléfono está cargado Trabajó para mí la primera vez perfectamente. Espero que esto resuelva tu problema.

+0

La respuesta anterior a usted hace lo mismo. No funcionó para mí. Lee los comentarios a la respuesta de androidika. –

+0

¿Cómo se relaciona este código de manifiesto con la respuesta? –

0

me pareció más ventajas utilizando este código (sólo para mostrar aplicaciones del navegador disponibles)

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("geo:")); 
if (intent.resolveActivity(getActivity().getPackageManager()) != null) { 
    startActivityForResult(Intent.createChooser(intent, "Continues with:", CHOOSE_NAVIGATOR_ID); 
} else { 
    // Handle failure... 
} 
+1

¿Puedes explicar el código? No sé nada sobre Java. – SteveFest

+0

Estoy usando objetos de intención para 'filtrar' las aplicaciones actualmente instaladas en el teléfono que pueden interpretar este tipo de esquema (típicamente aplicaciones de mapas o navegadores). Esta acción se delega al método resolveActivity que realmente comprueba si hay al menos una aplicación que puede interpretar este URI. Si está presente, se creará un "selector", es decir, una lista en particular que se puede hacer clic con los diversos iconos de aplicaciones compatibles, con el toque de uno de ellos se enviará a su aplicación con los parámetros definidos previamente en el URI. – Lorenzo

Cuestiones relacionadas