Saltar a contenido
For the complete DHIS2 documentation index, see llms.txt.

Getting started

Instalación

Include dependency in build.gradle. Use the latest published version, available in Maven Central:

Maven Central

dependencies {
    // Replace 1.x.x with the latest published version (see the Maven Central badge above)
    implementation "org.hisp.dhis:android-core:1.x.x"
    ...
}

Adicionalmente, debe incluir este repositorio en su archivo root gradle si aún no está allí:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Check compatibility here.

Inicialización D2

Para comenzar a usar el SDK, el primer paso es inicializar un objeto D2. La clase auxiliar D2Manager ofrece métodos estáticos para configurar e inicializar la instanciaD2. Además, asegura que D2 sea un singleton en toda la aplicación.

La configuración mínima que debe pasarse al D2Manager es la siguiente:

D2Configuration configuration = D2Configuration.builder()
    .context(context)
    .build();

Usando la configuración puede instanciar D2.

Single<D2> d2Single = D2Manager.instantiateD2(configuration);

Una vez completado el Single, puede acceder a D2 con el siguiente método:

D2 d2 = D2Manager.getD2();

Si no está utilizando RxJava, puede crear una instancia D2 en forma de bloqueo:

D2 d2 = D2Manager.blockingInstantiateD2(configuration);

El objeto D2Configuration tiene muchos campos para configurar el comportamiento del SDK.

Atributo Requerido Descripción Predeterminado
contexto verdadero Contexto de la aplicación -
appName falso Utilizar para crear la cabecera "user-agent" Desde Android Manifest
appVersion falso Utilizar para crear la cabecera "user-agent" Desde Android Manifest
readTimeoutInSeconds falso Tiempo límite de lectura para consultas http 30 segundos
connectTimeoutInSeconds falso Tiempo límite de conexión para consultas http 30 segundos
writeTimeoutInSeconds falso Tiempo límite de escritura para consultas http 30 segundos
interceptores falso Interceptores para OkHttpClient Ninguno
networkInterceptors falso NetworkInterceptors para OkHttpClient Ninguno

Google Play Services Support

The Google play services have been completely removed to make the SDK work on devices where the play services are not allowed; the SDK was using the ProviderInstaller present in the play service dependency to update the security provider to be protected against SSL exploits

If you're using a SDK version without google play services support, you have two options to update the security provider against SSL exploits, you can use an open-source solution called conscrypt to target devices without the google play services support or you can use play-services-safetynet dependency that's not open-source and required the google play services.

1. Play services Safetynet Dependency

If you're targeting devices that support the google play services, the best option is to use the ProviderInstaller included in the play-services-SafetyNet dependency by following steps.

dependencies {
    implementation "com.google.android.gms:play-services-safetynet:<version>"
    ...
}

After adding the play-services-safetynet dependency just create a method that you can used to install the security provider

public static void initialize(Context context){
    try {
        // ....
        ProviderInstaller.installIfNeeded(context.getApplicationContext());
        // ....
    } catch (GooglePlayServicesRepairableException e) {
        Log.e(TAG, e.toString());
    } catch (GooglePlayServicesNotAvailableException e) {
        Log.e(TAG, e.toString());
    } catch (NoSuchAlgorithmException e) {
        Log.e(TAG, e.toString());
    }
}

For more information about play-services-safetynet, check the official documentation link

2. Open-source solution

If you're not targeting devices with the google play services, conscrypt is an alternative to the play-services-safetynet dependency that can be used to update security provider against SSL exploits

dependencies {
    implementation 'org.conscrypt:conscrypt-android:<conscrypt-version>'
    ...
}

Setting up conscrypt is similar to the Google’s provider like in the following code :

public static void initialize(){
    try {
        Security.insertProviderAt(Conscrypt.newProvider(), 1);
    } catch(Exception e) {
        Log.e(TAG, e.toString());
    } catch (NoSuchAlgorithmException e) {
        Log.e(TAG, e.toString());
    }
}

For more information about conscrypt, check the official github repository on this link