Nhảy tới nội dung

Tích hợp Android

Bước 1: Tải và cấu hình SDK vào dự án

  1. Tải bộ tích hợp SDK từ VNPT và giải nén vào thư mục dự án.
  2. Sau khi giải nén, copy toàn bộ:
    • Các file .aar
    • Thư mục repo → vào thư mục app/libs/ của dự án Android.

Cấu hình file settings.gradle (hoặc settings.gradle.kts)

pluginManagement {  
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}

String storageUrl = System.env.FLUTTER_STORAGE_BASE_URL ?: "https://storage.googleapis.com"


dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
jcenter()
maven { url "https://jitpack.io" }

// Bỏ qua nếu tích hợp với Flutter app thì
maven {
//Đường dẫn thư mục chứa **repo** ở bước 1
url 'app/libs/repo'
}
// Bỏ qua nếu tích hợp với Flutter app
maven {
url "$storageUrl/download.flutter.io"
}

}
}

  • Thêm các thông tin cấu hình vào app/build.gradle
aaptOptions {  
noCompress "bic"
}
...
buildFeatures {
viewBinding true
}

dependencies {
...
implementation 'com.vnpt.smartca.module.vnpt_smartca_module:flutter_release:1.0'
//Đường dẫn tới các file aar (xem bước 1)
implementation files('libs/ekyc_sdk/ekyc_sdk-release-v3.6.6.aar')
implementation files('libs/eContractSDK-v1.0.2.aar')
implementation files('libs/ekyc_sdk/scanqr_ic_sdk-release-v1.0.6.aar')
// các thư viện đi kèm
annotationProcessor 'org.projectlombok:lombok:1.18.30'
...
}

  • Thêm FlutterActivity trong file AndroidManifest.xml như sau:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
//......
<application
//......

// Bỏ qua nếu tích hợp với Flutter app
<activity android:name="io.flutter.embedding.android.FlutterFragmentActivity"
android:theme="@style/Theme.Smartca_android_example"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize"/>

</application>


  • Bổ sung thuộc tính dưới đây vào file gradle.properties
android.enableJetifier=true

Bước 2: Khởi tạo eContractSDK

...
Map<String, Object> config = new HashMap<>();
putIfNotEmpty(EContractConstants.ConfigKey.accessToken, edtAccessToken.getText().toString());
putIfNotEmpty(EContractConstants.ConfigKey.contractId, edtContractId.getText().toString());
putIfNotEmpty(EContractConstants.ConfigKey.localImagePath, edtImagePath.getText().toString());
config.put(EContractConstants.ConfigKey.env, EContractConstants.ENV.DEVTEST);
config.put(EContractConstants.ConfigKey.locale, EContractConstants.Language.en);
config.put(EContractConstants.ConfigKey.clientId, "");
config.put(EContractConstants.ConfigKey.clientSecret, "");

EContractSDK.initialize(this, config);
...
private void putIfNotEmpty(String key, String value) {
if (!TextUtils.isEmpty(value)) {
config.put(key, value.trim());
} else {
config.remove(key);
}
}

  • Bổ sung lắng nghe kết quả phản hồi từ eContractSDK:
public class MainActivity extends AppCompatActivity implements EContractCallback {

}

Bước 3: Sử dụng các hàm chính

// Mở sdk mặc định
EContractSDK.launch(this,this);

// Chuyển tới màn danh sách hợp đồng đã gửi
EContractSDK.navigateToOutGoingContractListScreen(this, this);

// Chuyển tới màn danh sách hợp đồng đã nhận
EContractSDK.navigateToIncomingContractList(this, this);

// Chuyển tới màn chi tiết hợp đồng để xem / ký
EContractSDK.navigateToContractScreen(
this,
"",
null,
null,
this
);