2012-03-23 26 views
5

Duplicar posibles:
Android Launch an application from another applicationiniciar actividad de otra aplicación Android

Estoy teniendo un problema y es el siguiente:

Tengo dos aplicaciones, y yo Quiero lanzar una de las actividades de una aplicación por la otra ... Voy a dar un ejemplo:

primero paquete de la aplicación:

"es.wul4.android.app1"

segundo paquete de aplicación:

"es.wul4.android.app2"

Lo que quiero es iniciar la actividad cuya clase se llama "Identificar" desde la aplicación1

Esta actividad NO es la principal. Probé por doind que:

Intent intent = getPackageManager().getLaunchIntentForPackage("es.wul4.app2.Identificar"); 
startActivity(intent); 

Pero lo que consigo hacer eso no es nada, me dice que existe la aplicación Indiferente.

si trato de hacer eso:

getPackageManager().getLaunchIntentForPackage("es.wul4.app2"); 
startActivity(intent); 

Y es poner en marcha una actividad, pero la principal ........

¿Cómo puedo poner en marcha esta actividad en particular dentro del paquete " es.wul4.app2.Identificar "??

Muchas gracias.

+0

¿Desea comenzar una actividad particular? – Praveenkumar

Respuesta

15

Lo que necesita uso son intent-filters. Suponga que la actividad que se lanzará está en el paquete launch.me. Dentro de este manifiesto de aplicaciones, todas las actividades (principales o de otro tipo) se degradarán con la etiqueta <activity>.
Suponiendo que la actividad que desea iniciar está dentro del archivo de clase Launchme. A continuación, una parte de su manifiesto será algo como:

<activity android:name="launch.me.Launchme" 
       android:label="@string/app_name"> 
<intent-filter> 
      <action android:name="launch.me.action.LAUNCH_IT"/> 
      <category android:name="android.intent.category.DEFAULT"/> 
</intent-filter> 
</activity> 

Ahora en la actividad desde la que desea iniciar la actividad por encima de su uso: (Nota: Esta actividad puede estar en cualquier paquete en cualquier lugar.Usted tiene que asegurarse de que tanto el solicitante y solicitada paquetes están disponibles en el dispositivo)

Intent i=new Intent(); 
i.setAction("launch.me.action.LAUNCH_IT"); 
startActivityForResult(i,0); 

Puede utilizar otros métodos para iniciar la intención que no sea startActivityForResult, eso es hasta usted.

+0

¡Gracias! No sabía que era necesario utilizar el para iniciar la actividad, ahora puedo iniciar la actividad sin ningún problema e incluso puedo enviar datos determinados – zapotec

+0

sí, puede pasar fácilmente valores entre ellos mediante el uso de 'putExtra' con los intentos :) – Urban

1

¿Ha agregado actividad en el interior app1 s manifiesta ?:

<activity 
     android:label="@string/app_name" 
     android:name=".Identificar" > 
    </activity> 
+1

+1 para cosas importantes se menciona – Praveenkumar

+1

....... Creo que no entendiste muy bien .... app1 no contiene Activity Identificar. La actividad Identificar está dentro de la aplicación2. Lo que quiero es iniciar esta actividad desde la aplicación1. Gracias de cualquier manera. – zapotec

-3

creo, ya que ambas actividades están en el mismo paquete que sólo tiene que hacer:

startActivity(new Intent(getApplicationContext(), Identificar.class)); 
+0

lea la pregunta de nuevo ... "primer paquete de la aplicación:' es.wul4.android.app1', segundo paquete de la aplicación: 'es.wul4.android.app2'" – Selvin

+0

Umm, sí, mi culpa. –

Cuestiones relacionadas