Installation
i.Set Gradle
Declare the Android SDK repository in the build.gradle (project) to implement Android SDK.
maven {
url "https://nexus.fnsvalue.co.kr/repository/maven-releases/"
}
ii. Add Modules
Add necessary modules in the build.gradle(app).
dependencies {
implementation 'com.bsa.sdk:BsaAuthentication:1.0.7@aar'
}
Add dependencies to be manually installed in external library required for Android SDK
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,
<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.
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.
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) {
...
}
}
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.
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:
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.