Tích hợp Android
Bước 1: Tải và cấu hình SDK vào dự án
- Tải bộ tích hợp SDK từ VNPT và giải nén vào thư mục dự án.
- Sau khi giải nén, copy toàn bộ:
- Các file
.aar - Thư mục
repo→ vào thư mụcapp/libs/của dự án Android.
- Các file
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
);