Skip to content

Installation

i.Set Gradle

Declare the Android SDK repository in the build.gradle (project) to implement Android SDK.

kotlin
maven {
    url "https://nexus.fnsvalue.co.kr/repository/maven-releases/"
}

ii. Add Modules

Add necessary modules in the build.gradle(app).

kotlin
dependencies {
    implementation 'com.bsa.sdk:BsaAuthentication:1.0.7@aar'
}

Add dependencies to be manually installed in external library required for Android SDK

kotlin
dependencies { 
	// retrofit2
	implementation 'com.squareup.okhttp3:logging-interceptor:3.14.9'
	implementation 'com.squareup.retrofit2:retrofit:2.9.0'
	implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
	
	implementation 'com.google.code.gson:gson:2.8.6'
	
	// websocket
	implementation 'com.github.NaikSoftware:StompProtocolAndroid:1.6.4'
	
	// biometric
	implementation "androidx.biometric:biometric:1.0.1"
	
	implementation group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.2.5'
	implementation 'com.warrenstrange:googleauth:1.4.0'
}

iii. Permission Configuration

Set the permissions required to use various features through the Android SDK. It can be setup at the AndroidManifest.xml as follows,

kotlin
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.sample">

<uses-permission android:name="android.permission.INTERNET" />  
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  
<uses-permission android:name="android.permission.CAMERA"/>  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>  
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />  
<uses-permission android:name="android.permission.VIBRATE"/>  
<uses-permission android:name="android.permission.WAKE_LOCK"/>  
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />  
<uses-permission android:name="android.permission.READ_PHONE_STATE" />  
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />  
<uses-permission android:name="android.permission.BLUETOOTH" />  
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
  
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>  
<!-- Android 13 Notification Runtime -->  
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"  
    android:minSdkVersion="33"/>

    ....

</manifest>
</manifest>

iv. JAVA 8 Configuration

Specify Java version in the build.gradle(App) file to use Java 8 features.

java
android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    ....
}

v. Runtime Permission

Android 6.0 Marshmallow (API 23), or higher version requires the runtime permission to use the resources of device. The following are required permissions of the Android SDK to be declared.

java
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
	if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED 
	|| ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
		...
	}
}
java
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
	if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
		...
	}
}

Starting from Android 13 TIRAMISU (API 33) and above, runtime permissions are required to use the device's resources.

java
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
	if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
		...
	}
}

vi. Initialization

For initial setup, the Android SDK must be initialized after the installation. It can be initialized as follows:

kotlin
class GlobalApplication : Application() {
	override fun onCreate() {
		super.onCreate();
		
		BsaSdk.getInstance().init(  
	    applicationContext,  
	    "{Client Key}",  
	    "{API SERVER URL}"
		)
		
	}
}

Important

In order to fully utilize the Android SDK, the client application must be registered to generate the client key. Kindly reach us via Sandbox HelpDesk regarding this matter.