diff --git a/ahoy_rtc_sdk/build.gradle b/ahoy_rtc_sdk/build.gradle new file mode 100644 index 0000000..d22b474 --- /dev/null +++ b/ahoy_rtc_sdk/build.gradle @@ -0,0 +1,56 @@ +apply plugin: "maven-publish" + +configurations.maybeCreate("default") +def publishArtifact = artifacts.add("default", file('src/lib/ahoysdk.aar')) + +// set maven repository URL +ext.isSnapshot = ahoy_library_versionName.endsWith("-SNAPSHOT") +def mavenUrl = isSnapshot ? ahoy_publish_snapshotRepositoryUrl : ahoy_publish_releaseRepositoryUrl +if (ahoy_publish_toBuildDir.toBoolean()) { + mavenUrl = "file://$buildDir/repos/" + isSnapshot ? 'snapshots' : 'releases' +} + + +publishing { + publications { + aar(MavenPublication) { + groupId = ahoy_library_groupId + artifactId = ahoy_library_artifactId + version = ahoy_library_versionName + artifact publishArtifact + + pom.withXml { + // 2. add dependencies + def dependenciesNode = asNode().appendNode('dependencies') + def node = dependenciesNode.appendNode('dependency') + node.appendNode('groupId', 'org.java-websocket') + node.appendNode('artifactId', 'Java-WebSocket') + node.appendNode('version', '1.5.7') + node.appendNode('scope', 'compile') + + // 3. configure pom.xml extra information + asNode().children().last() + { + resolveStrategy = Closure.DELEGATE_FIRST + name ahoy_library_name + url ahoy_library_url + description ahoy_library_description + } + } + } + } + // Config maven repository + repositories { + maven { + url mavenUrl + credentials { + username = ahoy_publish_username + password = ahoy_publish_password + } + } + } +} + +repositories { + google() + mavenCentral() +} \ No newline at end of file diff --git a/ahoy_rtc_sdk/gradle.properties b/ahoy_rtc_sdk/gradle.properties new file mode 100644 index 0000000..c0d21a8 --- /dev/null +++ b/ahoy_rtc_sdk/gradle.properties @@ -0,0 +1,19 @@ + +ahoy_library_name = Ahoy's native android SDK +ahoy_library_description = Ahoy's mobile app SDK for android. +ahoy_library_url = https://ahoyrtc.com/ + +ahoy_library_groupId = com.ahoyrtc +ahoy_library_artifactId= sdk +ahoy_library_versionName = 1.47 + + +# url including scheme, host and port +ahoy_publish_toBuildDir = false +ahoy_publish_snapshotRepositoryUrl=https://api.webid-solutions.de/releases/android/maven/repository/snapshots +ahoy_publish_releaseRepositoryUrl=https://api.webid-solutions.de/releases/android/maven/repository/internal + +# Do not put real credentials here! +# Instead, copy to ~/.gradle/gradle.properties and set the values there. +ahoy_publish_username = +ahoy_publish_password = \ No newline at end of file diff --git a/ahoy_rtc_sdk/settings.gradle b/ahoy_rtc_sdk/settings.gradle new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/ahoy_rtc_sdk/settings.gradle @@ -0,0 +1 @@ + diff --git a/ahoy_rtc_sdk/src/lib/ahoysdk.aar b/ahoy_rtc_sdk/src/lib/ahoysdk.aar new file mode 100644 index 0000000..18679f5 Binary files /dev/null and b/ahoy_rtc_sdk/src/lib/ahoysdk.aar differ diff --git a/app/build.gradle b/app/build.gradle index 5718094..2af0322 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' + id 'org.jetbrains.kotlin.plugin.compose' version '2.1.0' } android { @@ -55,6 +56,8 @@ dependencies { implementation 'androidx.core:core-ktx:1.12.0' implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' + implementation 'androidx.compose.material3:material3:1.4.0' + implementation 'androidx.compose.foundation:foundation-layout:1.9.4' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.5' androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' @@ -62,22 +65,38 @@ dependencies { // webid product-plugin //noinspection GradleDependency - def product_catalog_version = "15.1.1" + def product_catalog_version = "21.1.2-SNAPSHOT" implementation ("de.webid-solutions:android_meta_plugin:$product_catalog_version") { changing = true } - implementation ("de.webid-solutions:android_auto_ident_on_server_product_plugin:$product_catalog_version") { + implementation ("de.webid-solutions:android_auto_ident_product_plugin:$product_catalog_version") { changing = true } - implementation ("de.webid-solutions:android_pay_on_server_product_plugin:$product_catalog_version") { + implementation ("de.webid-solutions:android_pay_ident_product_plugin:$product_catalog_version") { changing = true } implementation ("de.webid-solutions:android_video_ident_product_plugin:$product_catalog_version") { changing = true } - implementation ("de.webid-solutions:android_eid_on_server_product_plugin:$product_catalog_version") { + implementation ("de.webid-solutions:android_eid_product_plugin:$product_catalog_version") { changing = true } + implementation("de.webid-solutions:android_document_scanner:20.3.0-SNAPSHOT") + + + def composeBom = platform('androidx.compose:compose-bom:2025.11.00') + implementation composeBom + androidTestImplementation composeBom + + // Compose Core Dependencies + implementation 'androidx.compose.ui:ui' + implementation 'androidx.compose.ui:ui-graphics' + implementation 'androidx.compose.ui:ui-tooling-preview' + implementation 'androidx.compose.material3:material3' + implementation 'androidx.activity:activity-compose:1.9.3' + implementation 'androidx.compose.ui:ui-tooling-preview' + debugImplementation 'androidx.compose.ui:ui-tooling' + } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e1db1c7..39eb257 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:localeConfig="@xml/locales_config" - android:theme="@style/Theme.MetaPluginDemo"> + android:theme="@style/WebId.PluginTheme"> diff --git a/app/src/main/java/de/webidsolutions/metaplugindemo/MainActivity.kt b/app/src/main/java/de/webidsolutions/metaplugindemo/MainActivity.kt index fee2727..265a1f2 100644 --- a/app/src/main/java/de/webidsolutions/metaplugindemo/MainActivity.kt +++ b/app/src/main/java/de/webidsolutions/metaplugindemo/MainActivity.kt @@ -7,23 +7,27 @@ package de.webidsolutions.metaplugindemo import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle -import android.widget.Button -import android.widget.CheckBox -import android.widget.TextView +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent import androidx.activity.result.ActivityResult 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 androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import de.webidsolutions.auto_ident_product_plugin.AutoIdProductPlugin +import de.webidsolutions.eid_product_plugin.EIdProductPlugin import de.webidsolutions.meta_plugin.EMetaPluginFailReason import de.webidsolutions.meta_plugin.WebIdMetaPlugin +import de.webidsolutions.metaplugindemo.scenes.MetaPluginDemoScreen +import de.webidsolutions.metaplugindemo.scenes.ThemingChoice import de.webidsolutions.metaplugindemo.tasks.EApiResult import de.webidsolutions.metaplugindemo.tasks.MetaPluginVerifyTask import de.webidsolutions.mobile_app.sdk.WebIdMobileAppSdkException 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.pay_ident_product_plugin.AccountIdProductPlugin import de.webidsolutions.plugin_core.EProductPluginErrors import de.webidsolutions.plugin_core.IEPluginError import de.webidsolutions.plugin_core.IProductPluginWebId @@ -32,8 +36,8 @@ 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 de.webidsolutions.video_ident_product_plugin.VideoIdProductFailReason +import de.webidsolutions.video_ident_product_plugin.VideoIdProductPlugin import java.lang.Integer.parseInt import java.net.URI @@ -45,7 +49,7 @@ private val config = VideoOptionsConfig( ) // TODO insert your Action id -private const val actionId = "<9_digit_webid_transaction_id>" +private const val actionId = "348758601" // TODO choose your environment private val chosenEnvironment: EWebIDEnv = EWebIDEnv.TEST @@ -54,34 +58,35 @@ private val chosenEnvironment: EWebIDEnv = EWebIDEnv.TEST /** * Demo App which starts the [MetaPlugin] and handles its result. */ -internal class MainActivity : AppCompatActivity() { +internal class MainActivity : ComponentActivity + () { + + private var logText by mutableStateOf("") - 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 // private lateinit var coreSdk: IWebIdMobileAppSdk override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) - - textLog = findViewById(R.id.log) - - 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 { - clearLog() - writeLog(getString(R.string.starting)) - createCoreSdk() + setContent { + MaterialTheme { + MetaPluginDemoScreen( + logText = logText, + onStartClicked = { useAutoIdent, usePayOnServer, useEidOnServer, useVideo, themingChoice -> + clearLog() + writeLog(getString(R.string.starting)) + createCoreSdk( + useAutoIdent = useAutoIdent, + usePayOnServer = usePayOnServer, + useEidOnServer = useEidOnServer, + useVideo = useVideo, + themingChoice = themingChoice + ) + } + ) + } } + } /* CORE SDK */ @@ -89,7 +94,13 @@ internal class MainActivity : AppCompatActivity() { /** * Creates the Core SDK from the existing credentials. */ - private fun createCoreSdk() { + private fun createCoreSdk( + useAutoIdent: Boolean, + usePayOnServer: Boolean, + useEidOnServer: Boolean, + useVideo: Boolean, + themingChoice: ThemingChoice + ) { writeLog(getString(R.string.creating_core_sdk)) // should be provided to you -> currently just using demo credentials @@ -106,7 +117,12 @@ internal class MainActivity : AppCompatActivity() { writeLog(getString(R.string.core_sdk_creation_successful)) validateActionId() - val selectProductPlugins = getSelectedPlugins() + val selectProductPlugins = getSelectedPlugins( + useAutoIdent = useAutoIdent, + usePayOnServer = usePayOnServer, + useEidOnServer = useEidOnServer, + useVideo = useVideo + ) val metaPlugin = WebIdMetaPlugin( environment, @@ -116,7 +132,12 @@ internal class MainActivity : AppCompatActivity() { selectProductPlugins ) MetaPluginVerifyTask(metaPlugin) - .setOnPostExecuteCallback(metaPluginVerifyCallback(metaPlugin)) + .setOnPostExecuteCallback( + metaPluginVerifyCallback( + metaPlugin = metaPlugin, + themingChoice = themingChoice + ) + ) .execute(actionId) } @@ -142,27 +163,47 @@ internal class MainActivity : AppCompatActivity() { this::onPluginResultCallback ) - private fun getSelectedPlugins(): ArrayList { + private fun getSelectedPlugins( + useAutoIdent: Boolean, + usePayOnServer: Boolean, + useEidOnServer: Boolean, + useVideo: Boolean + ): ArrayList { return ArrayList( listOfNotNull( - 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, + if (useAutoIdent) AutoIdProductPlugin() else null, + if (usePayOnServer) AccountIdProductPlugin() else null, + if (useEidOnServer) EIdProductPlugin() else null, + if (useVideo) VideoIdProductPlugin(config) else null, ) ) } - private fun metaPluginVerifyCallback(metaPlugin: WebIdMetaPlugin): (AsyncTaskResultGeneric) -> Unit { + private fun metaPluginVerifyCallback(metaPlugin: WebIdMetaPlugin, + themingChoice: ThemingChoice + ): (AsyncTaskResultGeneric) -> Unit { + return { result -> if (result.errorResult == EApiResult.SUCCESS) { - var verifyActionIdResult = result.result try { - metaPlugin.startPlugin( - this, - activityResultLauncher, - R.style.CustomizedPluginTheme, - ) + when (themingChoice) { + ThemingChoice.XML -> { + metaPlugin.startPlugin( + this, + activityResultLauncher, + true + ) + } + + ThemingChoice.COMPOSE -> { + metaPlugin.startPlugin( + this, + activityResultLauncher, + null, + null + ) + } + } } catch (e: WebIdMobileAppSdkException) { e.printStackTrace() writeLog(e.message.toString()) @@ -175,7 +216,6 @@ internal class MainActivity : AppCompatActivity() { } private fun onPluginResultCallback(activityResult: ActivityResult) { - var metaPluginActivityResult = activityResult var result: String? try { // Get data and handle potential null case @@ -194,6 +234,7 @@ internal class MainActivity : AppCompatActivity() { result += " $resultInfo" // your code to handle the successful plugin execution } + writeLog(result) } else { // failure case if (failReason.specificResult != null) { @@ -203,30 +244,36 @@ internal class MainActivity : AppCompatActivity() { if (specificResult is EMetaPluginFailReason) { if (specificResult == EMetaPluginFailReason.EID_PENDING_AUTHADA) { // handle EID_PENDING_AUTHADA as described in code documentation + writeLog("EID_PENDING_AUTHADA") } else { // handle all other EMetaPluginFailReason as described in code documentation + writeLog("MetaPluginFailReason: $specificResult") } } else { // handle EVideoIdentProductPluginFailReasons - if (specificResult is EVideoIdentProductPluginFailReasons) { - if (specificResult == EVideoIdentProductPluginFailReasons.CALL_CENTER_CLOSED) { + if (specificResult is VideoIdProductFailReason) { + if (specificResult == VideoIdProductFailReason.CALL_CENTER_CLOSED) { // handle CALL_CENTER_CLOSED as described in code documentation + writeLog("CALL_CENTER_CLOSED") } else { // handle all other EVideoIdentProductPluginFailReasons errors as described in the code documentation + writeLog("VideoIdentFailReason: $specificResult") } } } } else { if (failReason.genericResult == EProductPluginErrors.UNKNOWN) { // handle UNKNOWN as described in code documentation + writeLog("Unknown Error") } else { // handle all other EProductPluginErrors errors as described in the code documentation + writeLog("Error: ${failReason.genericResult}") } } } } catch (e: WebIdPluginInterruptedException) { // Handle interruption in your preferred way - writeLog(e.toString()) + writeLog("Plugin interrupted: ${e.message}") } } @@ -234,18 +281,17 @@ internal class MainActivity : AppCompatActivity() { /** * Add an entry to the log. - * - * @param */ @SuppressLint("SetTextI18n") private fun writeLog(entry: String) { - textLog.text = "${textLog.text} $entry\n" + logText += "$entry\n" } /** * Resets the text log of this activity. */ private fun clearLog() { - textLog.text = "" + logText = "" } + } \ No newline at end of file diff --git a/app/src/main/java/de/webidsolutions/metaplugindemo/scenes/MetaPluginDemoScene.kt b/app/src/main/java/de/webidsolutions/metaplugindemo/scenes/MetaPluginDemoScene.kt new file mode 100644 index 0000000..b46d17c --- /dev/null +++ b/app/src/main/java/de/webidsolutions/metaplugindemo/scenes/MetaPluginDemoScene.kt @@ -0,0 +1,236 @@ +package de.webidsolutions.metaplugindemo.scenes + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.systemBarsPadding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.Checkbox +import androidx.compose.material3.CheckboxDefaults +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import de.webidsolutions.metaplugindemo.R + +enum class ThemingChoice() { + COMPOSE, + XML +} + +@Composable +fun MetaPluginDemoScreen( + logText: String, + onStartClicked: ( + useAutoIdent: Boolean, + usePayOnServer: Boolean, + useEidOnServer: Boolean, + useVideo: Boolean, + themingChoice: ThemingChoice + ) -> Unit +) { + var useAutoIdent by remember { mutableStateOf(false) } + var usePayOnServer by remember { mutableStateOf(false) } + var useEidOnServer by remember { mutableStateOf(false) } + var useVideo by remember { mutableStateOf(false) } + var useXmlTheming by remember { mutableStateOf(ThemingChoice.COMPOSE) } + + Column( + modifier = Modifier + .fillMaxSize() + .padding(start = 10.dp, top = 10.dp, end = 10.dp) + .systemBarsPadding() + ) { + Text( + text = stringResource(R.string.choose_plugins), + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier.padding(start = 10.dp) + ) + + Spacer(modifier = Modifier.height(10.dp)) + + Column { + CheckboxWithLabel( + checked = useAutoIdent, + onCheckedChange = { useAutoIdent = it }, + label = stringResource(R.string.autoid) + ) + + CheckboxWithLabel( + checked = usePayOnServer, + onCheckedChange = { usePayOnServer = it }, + label = stringResource(R.string.accountid) + ) + + CheckboxWithLabel( + checked = useEidOnServer, + onCheckedChange = { useEidOnServer = it }, + label = stringResource(R.string.eid) + ) + + CheckboxWithLabel( + checked = useVideo, + onCheckedChange = { useVideo = it }, + label = stringResource(R.string.videoid) + ) + } + + Spacer(modifier = Modifier.height(10.dp)) + + Text( + text = stringResource(R.string.choose_theming), + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier.padding(start = 10.dp) + ) + + Spacer(modifier = Modifier.height(10.dp)) + + Column { + CheckboxWithLabel( + checked = useXmlTheming == ThemingChoice.COMPOSE, + onCheckedChange = { isChecked -> + if (isChecked) { + useXmlTheming = ThemingChoice.COMPOSE + } + }, + label = "Standard Theme" + ) + + CheckboxWithLabel( + checked = useXmlTheming == ThemingChoice.XML, + onCheckedChange = { isChecked -> + if (isChecked) { + useXmlTheming = ThemingChoice.XML + } + }, + label = "Custom Theme (XML)" + ) + } + + Spacer(modifier = Modifier.height(10.dp)) + + Text( + text = stringResource(R.string.log_headline), + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier.padding(start = 10.dp) + ) + + Spacer(modifier = Modifier.height(10.dp)) + + Box( + modifier = Modifier + .weight(1f) + .fillMaxWidth() + .padding(horizontal = 10.dp) + ) { + val scrollState = rememberScrollState() + + LaunchedEffect(logText) { + scrollState.animateScrollTo(scrollState.maxValue) + } + + Surface( + modifier = Modifier.fillMaxSize(), + shape = MaterialTheme.shapes.small + ) { + Text( + text = logText.ifEmpty { stringResource(R.string.log_placeholder) }, + modifier = Modifier + .fillMaxSize() + .verticalScroll(scrollState) + .padding(16.dp) + .padding(bottom = 80.dp), + style = MaterialTheme.typography.bodyMedium + ) + } + + Button( + onClick = { + + onStartClicked( + useAutoIdent, + usePayOnServer, + useEidOnServer, + useVideo, + useXmlTheming + ) + }, + modifier = Modifier + .align(Alignment.BottomCenter) + .fillMaxWidth() + .height(60.dp), + colors = ButtonDefaults.buttonColors( + containerColor = Color(0xFF05B1FB) + ) + ) { + Text( + text = stringResource(R.string.start_button), + color = Color.White + ) + } + } + } +} + +@Composable +private fun CheckboxWithLabel( + checked: Boolean, + onCheckedChange: (Boolean) -> Unit, + label: String +) { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Checkbox( + checked = checked, + onCheckedChange = onCheckedChange, + colors = CheckboxDefaults.colors( + checkedColor = Color(0xFF05B1FB), + checkmarkColor = Color.White + ) + ) + + Spacer(modifier = Modifier.width(2.dp)) + Text(text = label) + } +} + +@Preview( + name = "MetaPluginDemoScreen - Long Log", + showBackground = true, + showSystemUi = true +) +@Composable +private fun MetaPluginDemoScreenLongLogPreview() { + MaterialTheme { + MetaPluginDemoScreen( + logText = buildString { + repeat(20) { index -> + appendLine("Log entry ${index + 1}: Processing...") + } + }, + onStartClicked = { _, _, _, _, _ -> } + ) + } +} + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index b5da5e9..a311fc9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -55,6 +55,41 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/cb_plugin_eid_on_server" /> + + + + + + + + + + app:layout_constraintTop_toBottomOf="@+id/themeChoiceGroup" /> Core SDK erfolgreich erstellt Validiere Vorgangsnummer… Fehler: Die Vorgangsnummer (Action-ID) wurde in der Datei „MainActivity.kt“ nicht auf eine 9-stellige Zahlenfolge gesetzt. + Theme auswählen: \ No newline at end of file diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index e9abb2f..ba49d68 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -9,4 +9,5 @@ Core SDK creado correctamente Validar número de operación… Error: El número de operación («action-ID») no se ha establecido en una secuencia numérica de 9 dígitos en el archivo «MainActivity.kt». + Elige un tema \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index b0b6721..953c560 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -9,4 +9,5 @@ Core SDK créé avec succès Valider le numéro d\'opération… Erreur : le numéro d\'opération (ActionID) n\'a pas été défini sur une séquence de 9 chiffres dans le fichier « MainActivity.kt ». + Choisir le thème \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 3282bfc..3d88625 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -9,4 +9,5 @@ Core SDK creato con successo Convalida numero operazione… Errore: il numero dell\'operazione (ActionID) non è stato impostato su una sequenza di 9 cifre nel file “MainActivity.kt”. + Scegli il tema \ No newline at end of file diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index af49a96..5ce005b 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -1,13 +1,20 @@ - - - - - \ No newline at end of file + diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index d7087e0..8ede8a4 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -9,4 +9,5 @@ Core SDK succesvol aangemaakt Valideer transactienummer… Fout: het actienummer (ActionID) is in het bestand “MainActivity.kt” niet ingesteld op een reeks van 9 cijfers. + Thema kiezen \ No newline at end of file diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index e9649f4..2556d77 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -9,4 +9,5 @@ Core SDK utworzony pomyślnie Zatwierdź numer operacji… Błąd: Numer operacji (Action-ID) nie został ustawiony na 9-cyfrową sekwencję cyfr w pliku „MainActivity.kt”. + Wybierz motyw \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 29687e7..009945b 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -9,4 +9,5 @@ Core SDK creat cu succes Validați numărul operațiunii… Eroare: Numărul operațiunii („Action-ID”) nu a fost setat la o secvență de 9 cifre în fișierul „MainActivity.kt”. + Alege tema \ No newline at end of file diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index c515290..6b44455 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -9,4 +9,5 @@ Core SDK başarıyla oluşturuldu İşlem numarasını doğrula… Hata: İşlem numarası (Action-ID) “MainActivity.kt” dosyasında 9 basamaklı bir sayı dizisi olarak ayarlanmamıştır. + Tema seç \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b49bc6f..757d2c6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -8,4 +8,5 @@ Core SDK creation successful Validate Action-ID… Failure: The transaction number (Action-ID) was not set to 9-digit number string in MainActivity.kt file. + Choose A Theme: \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 4e0d81a..dfbb943 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,13 +1,19 @@ - - - - - \ No newline at end of file + diff --git a/settings.gradle b/settings.gradle index 57ce0fd..c4d50b2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -14,7 +14,17 @@ dependencyResolutionManagement { // add the webid repo to receive the plugin maven { - url 'https://api.webid-solutions.de/releases/android/maven/repository/internal' + url "https://api.webid-solutions.de/releases/android/maven/repository/snapshots" + } + maven { + url "https://api.webid-solutions.de/releases/android/maven2/snapshots" + } + // use our release repository for releases + maven { + url "https://api.webid-solutions.de/releases/android/maven/repository/internal" + } + maven { + url "https://api.webid-solutions.de/releases/android/maven2/releases" } } }