Android SDK Reference

Class CredoAppService.Builder

CredoAppService.Builder is responsible for creating the CredoAppService class instance

CredoAppService.Builder(context: Context)

Parameters:

NameDescriptionType
contextAn instance of Context interface, which could provide information about an application environment.android.content.Context

Method CredoAppService.Builder.addModule(module: IModule)

addModule(module: IModule) : CredoAppService.Builder
  • The method adds a module to the builder configuration.

Parameters

NameDescriptionType
moduleRequires one of the following modulesIModule

Returns

CredoAppService.Builder


Method CredoAppService.Builder.addPlugin(plugin: IPlugin<*>)

addPlugin(plugin: IPlugin<*>) : CredoAppService.Builder
  • The method adds a plugin to the builder configuration.

Parameters

NameDescriptionType
pluginRequires one of the following pluginsIPugin

Returns

CredoAppService.Builder


Method CredoAppService.Builder.setIgnorePermissions(value)

 setIgnorePermissions(value: Boolean) : CredoAppService.Builder
  • The method sets if SDK should prevent the run of CredoAppService.collect() or execute() if permissions aren't granted.
  • The true value allows collecting dataset even if not all permissions are granted.
  • The false value restricts collecting dataset from running until all permissions are granted (including normal permissions).
  • The default value is true

Parameters

NameDescriptionType
valueRequires Boolean value true or falseBoolean

Returns

CredoAppService.Builder


Method CredoAppService.Builder.build()

build() : CredoAppService

Returns

configured CredoAppService instance.



Class CredoAppService

CredoAppService is responsible for capturing a client's digital footprint


Method CredoAppService.collect()

collect() : CredoAppResult<String>
  • Collects dataset and returns it locally. This method must not be called on the UI thread.
  • Does not accept any parameters

Returns

TypeDescription
CredoAppResult<String>If the collect method is succeeded, returns the string, which represents the array of bytes that is encoded to the base64 string
CredoAppResult.ErrorReturns an error if something goes wrong.
Please refer to the error codes table.

Method CredoAppService.getUngrantedPermissions()

getUngrantedPermissions(): CredoAppResult<Array<String>>

Returns

TypeDescription
CredoAppResult<Array<String>>Returns an array of ungranted permissions.
CredoAppResult.ErrorReturns an error if something goes wrong.
Please refer to the error codes table.

Class CredoAppResult<T>.Success

CredoAppResult.Success states for successful operation

Fields:

Field NameTypeDescription
valueTReturns value of generic type.

ClassCredoAppResult.Error

CredoAppResult.Error states for operation fail and contains error details

Fields:

Field NameTypeDescription
messageStringReturns the message value of the error.
codeIntReturns the code value of the error



Class BehavioralModule

BehavioralModule()

BehavioralModule is responsible for capturing a client's behavioral interaction with UI and OS


Static method BehavioralModule.startTracking()

startTracking()
  • Starts behavioral interaction metadata tracking

📘

When to invoke startTracking() ?

Before version 3.0.0 <= should be called as early as possible for instance, in desired activity onCreate() method. If you've version >= 3.0.0 you can invoke startTracking() in any place in your code.


Static method BehavioralModule.stopTracking()

stopTracking()
  • Terminates behavioral metadata tracking

Static method BehavioralModule.setLogger(plugin: IPlugin<ILogger>)

setLogger(plugin: IPlugin<ILogger>)

How to use BehavioralModule

It is necessary to call the BehavioralModule.startTracking() method before proceeding to complete the application form. The example is below

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)         
        // Include Optional Credolab Logging Module
        BehavioralModule.setLogger(LoggingPlugin())
        BehavioralModule.startTracking()
    }
}
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Include Optional Credolab Logging Module
        BehavioralModule.setLogger(new LoggingPlugin());
        BehavioralModule.startTracking();
    }
}
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            CredolabSdkAndroidTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    modifier = Modifier.fillMaxSize(),
                    color = MaterialTheme.colorScheme.background
                ) {
                    Column(modifier = Modifier.testTag("root_column")) {
                        MainScreen("Credoapp SDK")
                    }
                }
            }
        }
        BehavioralModule.startTracking()
    }

Add screen tracking within Jetpack Compose app

import credoapp.module.behavioral.tracker.credoAppTrackNavigation

val navController = rememberNavController().credoAppTrackNavigation()

NavHost(
  navController = navController
) {
  ...
}

Then pass BehavioralModule instance to CredoAppService to collect behavioral data along with other data

class SubmitActivity : AppCompatActivity() {
		// execute in background thread
    fun onSubmit() {
      val credoAppService = CredoAppService.Builder(applicationContext)
				// add other modules
        .addModule(BehavioralModule())
        .build()
      val result = credoAppService.collect()
      when (result) {
         is CredoAppResult.Success -> // send to the credolab server 
         is CredoAppResult.Error -> Log.d(TAG, "${result.message} ${result.code}")
      }
    }
}
public class SubmitActivity extends AppCompatActivity {
   void onSubmit() {
    CredoAppService credoAppService = new CredoAppService.Builder(applicationContext)
            // add other modules
            .addModule(new BehavioralModule())
            .build();
    CredoAppResult result = credoAppService.collect();
    if (result instanceof CredoAppResult.Success) {
        // send to the credolab server
    } else if (result instanceof CredoAppResult.Error) {
        CredoAppResult.Error errorResult = (CredoAppResult.Error) result;
        Log.d(TAG, errorResult.getMessage() + " " + errorResult.getCode());
    }
 }
}

👍

Highly recommended

For successful integration, we strongly recommend assigning a value to either the ID or Tag attributes or for Jetpack Compose app testTag modifier to emphasize a specific logical control or element that holds significance within the User Flow of your app.

For example:

 <Button
  android:id="@+id/submit_button"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="@string/submit_button"/>
 Button(enabled = isUpload.not(), onClick = {
        //....
    }, modifier = Modifier.testTag("submit_btn")) {
        Text("Submit")
    }

See more examples in our Behavioral Module Identifiers Guide (Android)



Class SmsIntelligenceModule

SmsIntelligenceModule(securityParam)

SmsIntelligenceModule is responsible for extracting SMS metadata with hashed lexical patterns protected by security param set by client. SecurityParam is required.

Parameters

NameDescriptionTypes
securityParamA security parameter for hashing lexical patterns.
Throws an exception if no security parameter (SecurityParam.None) is provided.
SecurityParam.Local
SecurityParam.None - Default parameter

🚧

Important note

The security parameter must remain unchanged once set and data is uploaded in production environment!

Sealed Class SecurityParam.Local

SecurityParam.Local(salt)

Represents a local security parameter using a custom salt for hashing
This ensures lexical pattern hashing is customized and secure.

🔐

Security Param value is never transmitted to Credolab.

Parameters

NameDescriptionType
saltA string value that is used in tokens hashing functions.
Required.
String



Error Codes

CodeReasonDescription
30Duplicated areas errorThe extracting areas are duplicated.
43Permissions are not grantedIf setIgnorePermissions configured method with false boolean value, SDK prevents you from proceeding without all the necessary permissions
90Unknown errorAn unexpected error occurred.