2012-06-06 27 views
29

Estoy buscando iniciar una actividad en mi aplicación mediante una acción personalizada. He encontrado algunas respuestas, pero todo lo que intento arroja java.lang.RuntimeException diciendo No Activity found to handle Intent {act = com.example.foo.bar.YOUR_ACTION}.Actividad de inicio mediante la acción personalizada

Esta es la actividad en mi archivo de manifiesto:

<activity 
    android:name=".FeedbackActivity" > 
    <intent-filter> 
     <action android:name="com.example.foo.bar.YOUR_ACTION" /> 
    </intent-filter> 
</activity> 

y así es como estoy empezando la actividad:

Intent intent = new Intent("com.example.foo.bar.YOUR_ACTION"); 
startActivity(intent); 

Cualquier ayuda sería muy apreciada.

+0

publique su manifiesto – FoamyGuy

+0

Creo que debe marcar la respuesta de Maks como la correcta (para referencia a los otros usuarios) – Kzar

+0

En realidad, marcar una respuesta como aceptada significa que funcionó para el OP, no necesariamente que es la mejor respuesta para todos los demás, para eso son los votos expresos. – Cullub

Respuesta

22

Creo que está creando un intento equivocado. Trate de esta manera:

String CUSTOM_ACTION = "com.example.foo.bar.YOUR_ACTION"; 

//Intent i = new Intent(this, FeedBackActivity.class); // <--- You might need to do it this way. 
Intent i = new Intent(); 
i.setAction(CUSTOM_ACTION); 

startActivity(i); 
+0

Ya no recibo una excepción, pero solo muestra una pantalla para que el usuario seleccione una aplicación para completar la acción. –

+0

es su aplicación en la lista? – FoamyGuy

+0

¿Qué es 'listIntent' en su código? ¿Quieres decir 'yo '? – Karu

80

Creo que lo que necesita es añadir una categoría por defecto a su intención de filtro, por ejemplo .

<activity 
    android:name=".FeedbackActivity" > 
    <intent-filter> 
     <action android:name="com.example.foo.bar.YOUR_ACTION" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

ver this answer para obtener más información.

+3

Esta es la respuesta correcta y debe marcarse como tal. – David

+0

¡Sí! Gracias amigo :) – yahya

1

Solo agregue y intent-filter category como Default.

La intención implícita funciona a la perfección y en muchos casos es mejor usar un intento implícito con Intención-acción para llamar a un servicio/Actividad que utilizando el nombre de clase.

Antes de startActivty()/startService() con el contexto adecuado puede utilizar este método 'queryIntentActivities(Intent intent, int flags)' de la clase de gestor de paquetes.

Ayuda al ActivityManager (responsable de las actividades de lanzamiento) a verificar si el sistema Android tiene alguna coincidencia con su intención.

Si no, devuelve una lista tamaño 0 o más> 0.

Con esto también puede verificar si su aplicación está recibiendo la llamada, y en este caso, incluso si su aplicación no está instalada/tiene algún problema, no se bloqueará, sino que lanzará una advertencia en Iniciar sesión. Los usuarios no tendrán grandes problemas aparte de la aplicación que no se lanzó.

(los usuarios nunca lo perdonarán si la aplicación de la gira falla).

Espero que esto ayude !!! Happy Coding. :)

Cuestiones relacionadas