Skip to content

Introduction

The DeviceAssure Android library validates devices accessing your mobile application by collecting device characteristics and comparing them against known valid device profiles maintained by the DeviceAssure backend service.

The library requires certain permissions before it can validate the device. Validation results may be returned directly to the library, to an intermediate server, or to a predefined callback URL.


API Reference

The complete API for every public class and method in the Android library is documented in the Javadoc.

View the Android Library Javadoc


Device Identification

The Android library uses three independent identifiers to verify a device's claimed identity: the User-Agent, the Make/Model (from Android build properties), and the TAC. These are cross-referenced to check that they all point to the same device. The library then compares measured hardware properties against known reference profiles for that device.

Having three identifiers rather than two (as with the Web library) provides stronger corroboration and more confident validation results.


Data Collection

The library collects data about the underlying hardware and system properties. It does not collect any PII data.

The collected data falls into the following groups:

  • Audio
  • Available Features
  • Bluetooth
  • Build
  • Build Version
  • Camera
  • CPU
  • Customer Properties
  • Display
  • DRM
  • GPS
  • GPU
  • Input Devices
  • mDNS
  • Media Codecs
  • Memory
  • Network
  • Permissions
  • Privilege Escalation
  • Runtime System
  • Sensor
  • Storage
  • Telephony
  • USB
  • Vibrator
  • Web
  • Wi-Fi

The library has minimal impact on the host application and uses a background thread where possible to avoid blocking the main UI thread. If the background thread does not complete within 10 seconds, it will terminate and send the properties gathered up to that point.


Integration Methods

The data collected by the library may be sent to the DeviceAssure service using either the Client to Server or Server to Server model. For help deciding which to use, see Choosing an Integration Method.


The Validation Methods

The DeviceAssure library exposes two main methods:

Both report their outcome through a Callback and are callable from Kotlin and Java alike.

Kotlin callers may instead use the suspending equivalents, DeviceAssure.checkAsync() and DeviceAssure.getDataAsync(), which return a ValidationResult rather than taking a callback. A suspend function compiles to a method that takes a Continuation parameter, which is not a usable API from Java.

Please see the Quick Start Guide and the integration guides for detailed usage examples.


See Also