Iniciar una actividad en la aplicación principal desde un módulo de la biblioteca de Android

Estoy construyendo mi primer módulo de biblioteca que estoy planeando llenar con código reutilizable para múltiples proyectos. Mi primer obstáculo es que tengo que ser capaz de iniciar una actividad en la aplicación principal desde el módulo de la biblioteca.

Por ejemplo, tengo una actividad de pantalla de bienvenida. Se ejecuta durante 2 segundos, luego lanza la actividad principal. Creo que puedo reutilizar esta actividad de pantalla de bienvenida, y quiero ponerla en mi módulo de biblioteca. Sin embargo, no estoy seguro de cómo iniciar la actividad principal de la biblioteca.

Mainfest en la configuración de la aplicación principal:

<activity android:name="com.example.myLibraryModule.SplashScreen" android:theme="@style/AppTheme.NoActionBar"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

El manifiesto lanza la pantalla de bienvenida que actualmente reside en mi módulo de biblioteca.

Dado que la biblioteca es una dependencia de la aplicación principal y no al revés, no estoy seguro de cómo iniciar el MainActivity desde mi SplashScreenActivity . No es tan fácil como:

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

SplashScreenActivity de su manifiesto principal y crearía un método protected llamado startMainActivity() o similar. Llame a este método dentro de su clase base SplashScreenActivity en un lugar en el que normalmente desea iniciar su MainActivity .

Entonces dentro de su proyecto principal subclase SplashScreenActivity y anule el método startMainActivity() para realizar un comportamiento que usted desea. No olvide poner su subclase SplashScreenActivity dentro del manifiesto del proyecto principal.

De esta manera puede reutilizar el comportamiento de SplashScreenActivity fácilmente en todos sus proyectos que puedan depender de él.

No deberías hacerlo de esa manera. Está fuertemente acoplando estas dos clases (la clase que comienza la actividad de la biblioteca y la actividad a cargar.

En su lugar, puede configurar una recepción de difusión en la aplicación que recibirá un objeto de intención y comenzará la actividad para usted. Si en el futuro desea que otras actividades o servicios se inicien de forma remota, podrá utilizar el mismo receptor de difusión para aceptar solicitudes de su librería. Todo lo que tienes que hacer es agregar datos a la colección de Intent's Extras que contendrá qué Activity para abrir (o cualquier otra tarea, por supuesto).

Esta solución de-pare tu lib y app, es mejor arquitectura wize (en mi opinión).

¡Buena suerte!

  • ¿Proguard.cfg es necesario para proyectos de biblioteca?
  • El proyecto de la Biblioteca de Android dice nullpointerexception
  • No se puede instanciar la actividad ... Causado por ClassNotFoundException
  • Uso de la nueva propiedad "manifestmerger" en Android
  • Compartir servicios y permisos de manifiesto del proyecto de la biblioteca
  • Aplicación de la biblioteca multidex para Android
  • Recursos de importación android de proyecto de biblioteca
  • Fusión del manifiesto de Gradle de Android falló
  • ¿Es posible obtener el contexto de la aplicación en un proyecto de biblioteca de Android?
  • ¿Cómo asegurarse de que el código de proyecto de la biblioteca de android se ejecuta sólo en una de las aplicaciones instaladas que lo integran?
  • .jar la importación de la biblioteca android en el proyecto Xamarin
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.