From 84b52bef47134c29424de4743d534e3c391a45b3 Mon Sep 17 00:00:00 2001 From: bacduong Date: Mon, 21 Jul 2025 15:39:42 +0200 Subject: [PATCH] [MWA-5012] MetaPlugin-Integration-Demo aktualisieren --- app/build.gradle | 8 +- .../metaplugindemo/MainActivity.kt | 78 ++++++++++++++++--- app/src/main/res/layout/activity_main.xml | 3 +- 3 files changed, 74 insertions(+), 15 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ed9db4d..2737130 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -4,14 +4,14 @@ plugins { } android { - compileSdk 34 + compileSdk 35 namespace "de.webidsolutions.metaplugindemo" defaultConfig { applicationId "de.webidsolutions.metaplugindemo" - minSdkVersion 24 - targetSdkVersion 34 + minSdkVersion 28 + targetSdkVersion 35 versionCode 1 versionName "1.0.0" @@ -62,7 +62,7 @@ dependencies { // webid product-plugin //noinspection GradleDependency - def product_catalog_version = "13.4.3" + def product_catalog_version = "15.0.0" implementation ("de.webid-solutions:android_meta_plugin:$product_catalog_version") { changing = true } diff --git a/app/src/main/java/de/webidsolutions/metaplugindemo/MainActivity.kt b/app/src/main/java/de/webidsolutions/metaplugindemo/MainActivity.kt index 9e42758..feb0fb1 100644 --- a/app/src/main/java/de/webidsolutions/metaplugindemo/MainActivity.kt +++ b/app/src/main/java/de/webidsolutions/metaplugindemo/MainActivity.kt @@ -5,6 +5,7 @@ package de.webidsolutions.metaplugindemo import android.annotation.SuppressLint +import android.content.Intent import android.os.Bundle import android.widget.Button import android.widget.CheckBox @@ -14,6 +15,7 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.appcompat.app.AppCompatActivity import de.webidsolutions.auto_ident_on_server_product_plugin.AutoIdentOnServerProductPlugin import de.webidsolutions.eid_on_server_product_plugin.EIdOnServerProductPlugin +import de.webidsolutions.meta_plugin.EMetaPluginFailReason import de.webidsolutions.meta_plugin.WebIdMetaPlugin import de.webidsolutions.metaplugindemo.tasks.EApiResult import de.webidsolutions.metaplugindemo.tasks.MetaPluginVerifyTask @@ -22,8 +24,16 @@ import de.webidsolutions.mobile_app.sdk.WebIdSdkEnvironment import de.webidsolutions.mobile_app.sdk.domain.VerifyActionIdResult import de.webidsolutions.mobile_app.sdk.impl.AsyncTaskResultGeneric import de.webidsolutions.pay_on_server_product_plugin.PayOnServerProductPlugin +import de.webidsolutions.plugin_core.EProductPluginErrors +import de.webidsolutions.plugin_core.IEPluginError import de.webidsolutions.plugin_core.IProductPluginWebId +import de.webidsolutions.plugin_core.IProductPluginWebId.Companion.getProductPluginResult +import de.webidsolutions.plugin_core.ProductPluginErrorResult +import de.webidsolutions.plugin_core.ProductPluginResult +import de.webidsolutions.plugin_core.WebIdPluginInterruptedException import de.webidsolutions.video_ident.plugin.videocall.VideoOptionsConfig +import de.webidsolutions.video_ident_product_plugin.EVideoIdentProductPluginFailReasons +import de.webidsolutions.video_ident_product_plugin.VideoIdentProductPlugin import java.lang.Integer.parseInt import java.net.URI @@ -35,7 +45,7 @@ private val config = VideoOptionsConfig( ) // TODO insert your Action id -private const val actionId = "279945707" +private const val actionId = "<9_digit_webid_transaction_id>" // TODO choose your environment private val chosenEnvironment: EWebIDEnv = EWebIDEnv.TEST @@ -49,6 +59,7 @@ internal class MainActivity : AppCompatActivity() { private lateinit var eidOnServerPluginCb: CheckBox private lateinit var payOnServerPluginCb: CheckBox private lateinit var autoIdOnServerPluginCb: CheckBox + private lateinit var videoPluginCb: CheckBox private lateinit var textLog: TextView private lateinit var startButton: Button @@ -63,6 +74,7 @@ internal class MainActivity : AppCompatActivity() { autoIdOnServerPluginCb = findViewById(R.id.cb_plugin_auto_id_on_server) payOnServerPluginCb = findViewById(R.id.cb_plugin_pay_on_server) eidOnServerPluginCb = findViewById(R.id.cb_plugin_eid_on_server) + videoPluginCb = findViewById(R.id.cb_plugin_video) startButton = findViewById(R.id.startButton) startButton.setOnClickListener { @@ -101,8 +113,7 @@ internal class MainActivity : AppCompatActivity() { username, apiKey, this.applicationContext, - selectProductPlugins, - config + selectProductPlugins ) MetaPluginVerifyTask(metaPlugin) .setOnPostExecuteCallback(metaPluginVerifyCallback(metaPlugin)) @@ -137,6 +148,7 @@ internal class MainActivity : AppCompatActivity() { if (autoIdOnServerPluginCb.isChecked) AutoIdentOnServerProductPlugin() else null, if (payOnServerPluginCb.isChecked) PayOnServerProductPlugin() else null, if (eidOnServerPluginCb.isChecked) EIdOnServerProductPlugin() else null, + if (videoPluginCb.isChecked) VideoIdentProductPlugin(config) else null, ) ) } @@ -162,14 +174,62 @@ internal class MainActivity : AppCompatActivity() { } } - private fun onPluginResultCallback(result: ActivityResult?) { - var metaPluginActivityResult = result - + private fun onPluginResultCallback(activityResult: ActivityResult) { + var metaPluginActivityResult = activityResult + var result: String? + try { + // Get data and handle potential null case + // If data is null, plugin was interrupted + val data: Intent = activityResult.data ?: throw WebIdPluginInterruptedException() + // Retrieve the plugin result and handle any errors + val pluginResult: ProductPluginResult<*> = getProductPluginResult( + data, activityResult.resultCode + ) + val resultInfo: String? = pluginResult.info + val failReason: ProductPluginErrorResult<*>? = pluginResult.error + // Successful plugin execution + if (failReason == null) { + result = "Success" + if (resultInfo != null) { + result += " $resultInfo" + // your code to handle the successful plugin execution + } + } else { + // failure case + if (failReason.specificResult != null) { + val specificResult: IEPluginError? = + failReason.specificResult as IEPluginError? + // handle EMetaPluginFailReason + if (specificResult is EMetaPluginFailReason) { + if (specificResult == EMetaPluginFailReason.EID_PENDING_AUTHADA) { + // handle EID_PENDING_AUTHADA as described in code documentation + } else { + // handle all other EMetaPluginFailReason as described in code documentation + } + } else { + // handle EVideoIdentProductPluginFailReasons + if (specificResult is EVideoIdentProductPluginFailReasons) { + if (specificResult == EVideoIdentProductPluginFailReasons.CALL_CENTER_CLOSED) { + // handle CALL_CENTER_CLOSED as described in code documentation + } else { + // handle all other EVideoIdentProductPluginFailReasons errors as described in the code documentation + } + } + } + } else { + if (failReason.genericResult == EProductPluginErrors.UNKNOWN) { + // handle UNKNOWN as described in code documentation + } else { + // handle all other EProductPluginErrors errors as described in the code documentation + } + } + } + } catch (e: WebIdPluginInterruptedException) { + // Handle interruption in your preferred way + writeLog(e.toString()) + } } - - - /* MISC */ /** diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 31a4418..652e5ec 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:fitsSystemWindows="true" tools:context=".MainActivity">