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:
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.