From c773a17550aed6c1b10a24095b37c0af5f87cf5a Mon Sep 17 00:00:00 2001 From: Egor Kitselyuk Date: Mon, 15 Jun 2026 14:43:14 +0300 Subject: [PATCH 1/9] MOBILE-215: Change example styles --- .../mindbox/example/CustomInAppCallback.kt | 2 +- .../java/com/mindbox/example/MainActivity.kt | 51 +- .../app/src/main/res/layout/activity_main.xml | 484 ++++++++++++------ .../main/res/layout/bottom_sheet_inapp.xml | 56 ++ .../app/src/main/res/values-night/themes.xml | 37 +- example/app/src/main/res/values/colors.xml | 26 +- example/app/src/main/res/values/strings.xml | 6 +- example/app/src/main/res/values/themes.xml | 42 +- 8 files changed, 516 insertions(+), 188 deletions(-) create mode 100644 example/app/src/main/res/layout/bottom_sheet_inapp.xml diff --git a/example/app/src/main/java/com/mindbox/example/CustomInAppCallback.kt b/example/app/src/main/java/com/mindbox/example/CustomInAppCallback.kt index 6b18fd7db..abebc78a4 100644 --- a/example/app/src/main/java/com/mindbox/example/CustomInAppCallback.kt +++ b/example/app/src/main/java/com/mindbox/example/CustomInAppCallback.kt @@ -31,4 +31,4 @@ object CustomInAppCallback : InAppCallback { ) Log.d(Utils.TAG, "onInAppDismissed id=$id") } -} \ No newline at end of file +} diff --git a/example/app/src/main/java/com/mindbox/example/MainActivity.kt b/example/app/src/main/java/com/mindbox/example/MainActivity.kt index 5b8cf6716..c11c6607f 100644 --- a/example/app/src/main/java/com/mindbox/example/MainActivity.kt +++ b/example/app/src/main/java/com/mindbox/example/MainActivity.kt @@ -1,11 +1,16 @@ package com.mindbox.example import android.Manifest +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context import android.content.Intent import android.content.pm.PackageManager import android.os.Build import android.os.Bundle import android.util.Log +import android.view.View +import android.widget.TextView import androidx.activity.result.contract.ActivityResultContracts import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity @@ -25,6 +30,7 @@ class MainActivity : AppCompatActivity() { setContentView(binding.root) showSdkDataOnScreen() + setupCopyOnClick() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { checkAndRequestPostNotificationsPermission() @@ -36,6 +42,10 @@ class MainActivity : AppCompatActivity() { proceedUrl(url = url) } + binding.btnShowInapp.setOnClickListener { + InAppBottomSheet().show(supportFragmentManager, InAppBottomSheet::class.java.simpleName) + } + binding.btnAsyncOperation.setOnClickListener { //https://developers.mindbox.ru/docs/android-integration-of-actions sendAsync(type = AsyncOperationType.OPERATION_BODY_JSON, context = this) @@ -47,9 +57,9 @@ class MainActivity : AppCompatActivity() { sendSync(type = SyncOperationType.OPERATION_BODY_WITH_CUSTOM_RESPONSE, context = this) showToast(context = this, message = "Sync operation was sent") } + binding.btnOpenActivity.setOnClickListener { - val intent = Intent(this, ActivityTransitionByPush::class.java) - this.startActivity(intent) + startActivity(Intent(this, ActivityTransitionByPush::class.java)) } binding.btnOpenPushList.setOnClickListener { @@ -117,17 +127,38 @@ class MainActivity : AppCompatActivity() { //https://developers.mindbox.ru/docs/android-sdk-methods#subscribepushtoken-%D0%B8-disposepushtokensubscription var subscriptionPushToken = "" - subscriptionPushToken = - Mindbox.subscribePushTokens { tokens -> - runOnUiThread { - binding.tvTokenResult.text = tokens - //https://developers.mindbox.ru/docs/android-sdk-methods#getpushtokensavedate - binding.tvTokenDateResult.text = Mindbox.getPushTokensSaveDate().toString() - } - Mindbox.disposePushTokenSubscription(subscriptionPushToken) + subscriptionPushToken = Mindbox.subscribePushTokens { tokens -> + runOnUiThread { + binding.tvTokenResult.text = tokens + //https://developers.mindbox.ru/docs/android-sdk-methods#getpushtokensavedate + binding.tvTokenDateResult.text = Mindbox.getPushTokensSaveDate().toString() } + Mindbox.disposePushTokenSubscription(subscriptionPushToken) + } //https://developers.mindbox.ru/docs/android-sdk-methods#getsdkversion binding.tvSdkVersionResult.text = Mindbox.getSdkVersion() } + + private fun setupCopyOnClick() { + binding.rowDeviceUuid.copyOnClick(binding.tvDeviceUUIDResult) + binding.rowToken.copyOnClick(binding.tvTokenResult) + binding.rowTokenDate.copyOnClick(binding.tvTokenDateResult) + binding.rowPushUrl.copyOnClick(binding.tvPushUrlResult) + binding.rowPushPayload.copyOnClick(binding.tvPushPayloadResult) + binding.rowSdkVersion.copyOnClick(binding.tvSdkVersionResult) + } + + private fun View.copyOnClick(valueView: TextView) { + setOnClickListener { + val text = valueView.text.toString() + if (text.isEmpty()) return@setOnClickListener + val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + clipboard.setPrimaryClip(ClipData.newPlainText(null, text)) + // Android 13+ shows its own copy confirmation bubble — avoid double toast + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) { + showToast(context = this@MainActivity, message = "Скопировано") + } + } + } } diff --git a/example/app/src/main/res/layout/activity_main.xml b/example/app/src/main/res/layout/activity_main.xml index 67eaa34f2..8b0067551 100644 --- a/example/app/src/main/res/layout/activity_main.xml +++ b/example/app/src/main/res/layout/activity_main.xml @@ -7,178 +7,328 @@ android:fitsSystemWindows="true" tools:context=".MainActivity"> - - - - - - - - - - - - - - - - - - - - - - - - -