From c0a8673e9f97fbeb565000fe85d2f1ce55f6e8c2 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 16 Sep 2020 10:21:33 -0300 Subject: Make apps work on API 21+ (except cashier that needs 23+) --- wallet/build.gradle | 7 ++++++- wallet/fastlane/Fastfile | 2 +- wallet/proguard-rules.pro | 1 + wallet/src/main/AndroidManifest.xml | 5 +++-- .../main/java/net/taler/wallet/UriInputFragment.kt | 5 +++-- wallet/src/main/java/net/taler/wallet/Utils.kt | 20 ++------------------ .../taler/wallet/transactions/TransactionAdapter.kt | 7 +++---- .../taler/wallet/withdraw/ManualWithdrawFragment.kt | 2 +- .../res/layout/fragment_transaction_withdrawal.xml | 2 +- wallet/src/main/res/layout/fragment_uri_input.xml | 2 +- wallet/src/main/res/layout/list_item_exchange.xml | 3 +-- wallet/src/main/res/layout/list_item_transaction.xml | 3 +-- 12 files changed, 24 insertions(+), 35 deletions(-) (limited to 'wallet') diff --git a/wallet/build.gradle b/wallet/build.gradle index b5720be..02123ee 100644 --- a/wallet/build.gradle +++ b/wallet/build.gradle @@ -45,7 +45,7 @@ android { defaultConfig { applicationId "net.taler.wallet" - minSdkVersion 24 + minSdkVersion 21 targetSdkVersion 29 versionCode 8 versionName "v0.8.0-rc.3" @@ -82,6 +82,9 @@ android { compileOptions { sourceCompatibility = 1.8 targetCompatibility = 1.8 + + // Flag to enable support for the new language APIs for zxing + coreLibraryDesugaringEnabled true } kotlinOptions { @@ -129,6 +132,8 @@ dependencies { // QR codes implementation 'com.journeyapps:zxing-android-embedded:4.0.2@aar' + // needed to support zxing library in taler-kotlin-android on API < 24 + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10' // Nicer ProgressBar implementation 'me.zhanghai.android.materialprogressbar:library:1.6.1' diff --git a/wallet/fastlane/Fastfile b/wallet/fastlane/Fastfile index 3c2f8cd..695540c 100644 --- a/wallet/fastlane/Fastfile +++ b/wallet/fastlane/Fastfile @@ -42,7 +42,7 @@ platform :android do skip_upload_images: 'true', skip_upload_screenshots: 'true', skip_upload_apk: 'true', # This is an app bundle, so APK is not possible - validate_only: 'true' + validate_only: 'false' ) end end diff --git a/wallet/proguard-rules.pro b/wallet/proguard-rules.pro index 27f3799..ca6bc15 100644 --- a/wallet/proguard-rules.pro +++ b/wallet/proguard-rules.pro @@ -22,4 +22,5 @@ -keep class akono.AkonoJni {*;} +#noinspection ShrinkerUnresolvedReference -keep class net.taler.wallet.** {*;} diff --git a/wallet/src/main/AndroidManifest.xml b/wallet/src/main/AndroidManifest.xml index e2a79da..b011583 100644 --- a/wallet/src/main/AndroidManifest.xml +++ b/wallet/src/main/AndroidManifest.xml @@ -32,14 +32,15 @@ + tools:ignore="GoogleAppIndexingWarning" + tools:targetApi="m"> () ui.pasteButton.setOnClickListener { - val item = clipboard.primaryClip?.getItemAt(0) + val item = clipboard?.primaryClip?.getItemAt(0) if (item?.text != null) { ui.uriView.setText(item.text) } else { diff --git a/wallet/src/main/java/net/taler/wallet/Utils.kt b/wallet/src/main/java/net/taler/wallet/Utils.kt index ea01552..388bf61 100644 --- a/wallet/src/main/java/net/taler/wallet/Utils.kt +++ b/wallet/src/main/java/net/taler/wallet/Utils.kt @@ -29,8 +29,8 @@ import android.os.Build.VERSION.SDK_INT import android.widget.Toast import android.widget.Toast.LENGTH_LONG import androidx.annotation.RequiresApi +import androidx.core.content.getSystemService import com.google.zxing.integration.android.IntentIntegrator -import org.json.JSONObject fun scanQrCode(activity: Activity) { IntentIntegrator(activity).apply { @@ -69,7 +69,7 @@ private fun connectToWifi29(context: Context, ssid: String) { @Suppress("DEPRECATION") private fun connectToWifiDeprecated(context: Context, ssid: String) { - context.getSystemService(WifiManager::class.java)?.apply { + context.getSystemService()?.apply { if (!isWifiEnabled) { val enabledResult = setWifiEnabled(true) while (enabledResult && !isWifiEnabled) Thread.sleep(25) @@ -91,22 +91,6 @@ private fun connectToWifiDeprecated(context: Context, ssid: String) { } } -fun getErrorString(json: JSONObject): String { - return StringBuilder().apply { - append(json.getString("talerErrorCode")) - append(" ") - append(json.getString("message")) - json.optJSONObject("details")?.let { details -> - details.optJSONObject("errorResponse")?.let { errorResponse -> - append("\n\n") - append(errorResponse.optString("code")) - append(" ") - append(errorResponse.optString("hint")) - } - } - }.toString() -} - fun cleanExchange(exchange: String) = exchange.let { if (it.startsWith("https://")) it.substring(8) else it }.trimEnd('/') diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt index 936bbbd..5e492f5 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionAdapter.kt @@ -25,6 +25,7 @@ import android.view.View.VISIBLE import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView +import androidx.core.content.ContextCompat.getColor import androidx.recyclerview.selection.ItemDetailsLookup import androidx.recyclerview.selection.ItemKeyProvider import androidx.recyclerview.selection.SelectionTracker @@ -80,13 +81,11 @@ internal class TransactionAdapter( private val amount: TextView = v.findViewById(R.id.amount) private val pendingView: TextView = v.findViewById(R.id.pendingView) - private val selectableForeground = v.foreground private val amountColor = amount.currentTextColor - private val red = context.getColor(R.color.red) - private val green = context.getColor(R.color.green) + private val red = getColor(context, R.color.red) + private val green = getColor(context, R.color.green) fun bind(transaction: Transaction, selected: Boolean) { - v.foreground = selectableForeground v.setOnClickListener { listener.onTransactionClicked(transaction) } v.isActivated = selected if (transaction.error == null) { diff --git a/wallet/src/main/java/net/taler/wallet/withdraw/ManualWithdrawFragment.kt b/wallet/src/main/java/net/taler/wallet/withdraw/ManualWithdrawFragment.kt index 4b56dd0..f368c68 100644 --- a/wallet/src/main/java/net/taler/wallet/withdraw/ManualWithdrawFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/withdraw/ManualWithdrawFragment.kt @@ -53,7 +53,7 @@ class ManualWithdrawFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { ui.qrCodeButton.setOnClickListener { scanQrCode(requireActivity()) } ui.currencyView.text = exchangeItem.currency - val paymentOptions = exchangeItem.paytoUris.mapNotNull {paytoUri -> + val paymentOptions = exchangeItem.paytoUris.mapNotNull { paytoUri -> Uri.parse(paytoUri).authority?.toUpperCase(Locale.getDefault()) }.joinToString(separator = "\n", prefix = "• ") ui.paymentOptionsLabel.text = diff --git a/wallet/src/main/res/layout/fragment_transaction_withdrawal.xml b/wallet/src/main/res/layout/fragment_transaction_withdrawal.xml index 5a1e82f..8fe3247 100644 --- a/wallet/src/main/res/layout/fragment_transaction_withdrawal.xml +++ b/wallet/src/main/res/layout/fragment_transaction_withdrawal.xml @@ -60,8 +60,8 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic_account_balance" - android:drawableTint="?attr/colorOnPrimarySurface" android:text="@string/withdraw_button_confirm_bank" + app:drawableTint="?attr/colorOnPrimarySurface" app:layout_constraintBottom_toTopOf="@+id/chosenAmountLabel" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/wallet/src/main/res/layout/fragment_uri_input.xml b/wallet/src/main/res/layout/fragment_uri_input.xml index 60155e3..1e9934f 100644 --- a/wallet/src/main/res/layout/fragment_uri_input.xml +++ b/wallet/src/main/res/layout/fragment_uri_input.xml @@ -51,8 +51,8 @@ android:layout_marginEnd="16dp" android:layout_weight="1" android:drawableLeft="@drawable/ic_content_paste" - android:drawableTint="?attr/colorOnPrimarySurface" android:text="@string/paste" + app:drawableTint="?attr/colorOnPrimarySurface" app:layout_constraintEnd_toStartOf="@+id/okButton" app:layout_constraintHorizontal_chainStyle="spread_inside" app:layout_constraintStart_toStartOf="parent" diff --git a/wallet/src/main/res/layout/list_item_exchange.xml b/wallet/src/main/res/layout/list_item_exchange.xml index c9d1df4..d81e759 100644 --- a/wallet/src/main/res/layout/list_item_exchange.xml +++ b/wallet/src/main/res/layout/list_item_exchange.xml @@ -19,8 +19,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/selectable_background" - android:foreground="?attr/selectableItemBackground" + android:background="?attr/selectableItemBackground" android:paddingTop="16dp" android:paddingBottom="16dp"> diff --git a/wallet/src/main/res/layout/list_item_transaction.xml b/wallet/src/main/res/layout/list_item_transaction.xml index 239e656..ed031c3 100644 --- a/wallet/src/main/res/layout/list_item_transaction.xml +++ b/wallet/src/main/res/layout/list_item_transaction.xml @@ -19,8 +19,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/selectable_background" - android:foreground="?attr/selectableItemBackground" + android:background="?attr/selectableItemBackground" android:paddingStart="16dp" android:paddingTop="8dp" android:paddingEnd="16dp" -- cgit v1.2.3