2012-04-24 57 views
5

Intento utilizar una intención implícita para iniciar una actividad dentro de la misma aplicación y para una actividad de otra aplicación (mi otra aplicación, no la nativa), pero no pude tener éxito en ninguna de las casos.Intento implícito no se llama

Aquí está mi código de ejemplo para la primera parte (es decir, para poner en marcha una actividad dentro de la misma aplicación):

Dentro Actividad TESTActivity

Intent intent = new Intent(); 
intent.setAction("com.myapp.game.myimplicit_action"); 
startActivity(intent); 

y aquí está mi declaración archivo de manifiesto para algunos actividad decir 'ImplicitActivity' con la misma acción:

<activity 
    android:name=".TESTActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

<activity android:name=".ImplicitActivity"> 
    <intent-filter> 
    <action android:name="com.myapp.test.myimplicit_action" /> 
    </intent-filter> 
</activity> 

Tanto las actividades TESTActivity y ImplicitActivity están en la misma aplicación bajo el mismo paquete. Aún así mi actividad ImplicitActivity no se está llamando.

Respuesta

12

He descubierto el problema. Publicar la respuesta para los demás que enfrentan el mismo problema.

Tenemos que agregar Categoría por defecto para hacer que los intentos implícitos funcionen. Así que aquí está la entrada de manifiesto correcta para la misma actividad:

<activity 
    android:name=".TESTActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

<activity android:name=".ImplicitActivity"> 
    <intent-filter> 
    <action android:name="com.myapp.test.myimplicit_action" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity>