lanzar actividades desde diferentes paquetes

Tengo la actividad A en el paquete uno, y quiero ejecutar un bash que boostá una actividad B que está en el paquete dos.

¿Cómo puedo hacer esto? Cualquier muestra será bienvenida.

esto es lo que he hecho y el error que recibo:

primera actividad (“MainActivity”) en un paquete: com.abelski.currencyclient y segunda actividad (“SecondActivity” en un paquete diferente: com.idan.second

ahora quiero llamar desde MainActivity a SecondActivity.

He añadido esta línea en el manifiesto de la actividad principal:

 

ahora en la actividad principal, obtuve este botón que ejecuta esta línea:

 Intent intent = new Intent(MainActivity.this,SecondApplicationActivity.class); 

y este es el error:

 04-29 09:20:59.197: ERROR/AndroidRuntime(399): Uncaught handler: thread main exiting due to uncaught exception 04-29 09:20:59.276: ERROR/AndroidRuntime(399): java.lang.NoClassDefFoundError: com.idan.second.SecondApplicationActivity 04-29 09:20:59.276: ERROR/AndroidRuntime(399): 

Supongo que por “paquetes” te refieres a las aplicaciones.

Tenemos: – ApplicationA con FirstActivity – ApplicationB con SecondActivity

Si, en el archivo AndroidManifest.xml de la aplicación B, en la statement de SecondActivity agrega un filtro de intención como:

       

Puede crear un Intento para iniciar esta SecondActivity desde FirstActivity con:

 Intent intent = new Intent("applicationB.intent.action.Launch"); startActivity(intent); 

Lo que todo esto significa es:

  • SecondActivity tiene un filtro para la acción de intención de “applicationB.intent.action.Launch”
  • Cuando crea una intención con esa acción y llama a ‘startActivity’, el sistema encontrará la actividad (si corresponde) que responde a ella

La documentación para esto está en: https://developer.android.com/reference/android/content/Intent.html

Tuve el mismo problema y la solución era otro nivel en la raíz del nombre de tu paquete.

Si tiene dos paquetes “com.first ….” y “com.second …”, y el manifiesto hace referencia a “com.first”. Luego puede refactorizar ambos paquetes para reutilizar la primera parte. Por ejemplo, “com.package.first” y “com.package.second”. Entonces tu manifiesto también debe ser actualizado

  ...             

Su código de Java puede crear un bash e iniciar la actividad de la manera habitual:

 Intent intent = new Intent(this,ActivityClassName.class); startActivity(intent); 

Si el paquete que mencionas aquí es el mismo para la aplicación, creo que la respuesta en la pregunta Android: Iniciar una actividad para una aplicación de terceros diferente es simple. Con la primera respuesta a esa pregunta, no necesitas hacer ninguna modificación a tu segunda aplicación

Use intenciones explícitas:

 Intent intent = new Intent(context,ClassName.class); 

donde ClassName es de otro paquete.

A veces, no sabrá el nombre de la clase, en tales casos tendrá que confiar en la intención que la clase objective publicita manejar.