braintree_android
braintree_android copied to clipboard
Crash ThreeDSecureClient
General information
-
SDK/Library version: 4.15.0
-
Environment: Sandbox
-
Android Version and Device: Android 13
-
Compile and Target SDK version: 33
-
Braintree dependencies:
com.braintreepayments.api:card:4.15.0
com.braintreepayments.api:three-d-secure:4.15.0
Issue description
After calling method threeDSecureClient.performVerification
it will crash. Stacktrace of the crash is below.
java.lang.SecurityException: Settings key: <data_roaming> is only readable to apps with targetSdkVersion lower than or equal to: 32
at android.provider.Settings$NameValueCache.getStringForUser(Settings.java:3081)
at android.provider.Settings$Global.getStringForUser(Settings.java:15854)
at android.provider.Settings$Global.getString(Settings.java:15837)
at com.cardinalcommerce.a.setLineHeight.<init>(:166)
at com.cardinalcommerce.a.setHint.<init>(:23)
at com.cardinalcommerce.a.setLineSpacing.Cardinal(:52)
at com.cardinalcommerce.cardinalmobilesdk.Cardinal.configure(:5039)
at com.braintreepayments.api.CardinalClient.configurationCardinal(CardinalClient.java:62)
at com.braintreepayments.api.CardinalClient.initialize(CardinalClient.java:21)
at com.braintreepayments.api.ThreeDSecureClient$1.onResult(ThreeDSecureClient.java:171)
at com.braintreepayments.api.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:41)
at com.braintreepayments.api.BraintreeClient$1.onAuthorizationResult(BraintreeClient.java:165)
at com.braintreepayments.api.AuthorizationLoader.loadAuthorization(AuthorizationLoader.java:20)
at com.braintreepayments.api.BraintreeClient.getAuthorization(BraintreeClient.java:174)
at com.braintreepayments.api.BraintreeClient.getConfiguration(BraintreeClient.java:161)
at com.braintreepayments.api.ThreeDSecureClient.performVerification(ThreeDSecureClient.java:133)
Hi, guys! Are there any estimates you can share with us on when this is potentially fixed?
Hey @auxDK thanks for using the Braintree SDK for Android. We've reached out to Cardinal, our 3rd-party MPI on this issue. We'll report here when we have more information.
Hi, we've encountered this issue on internal Android 13 builds. Same crash as mentioned above. We are using the latest drop-in UI dependency com.braintreepayments.api:drop-in:6.2.0
.
Hi @ersen-lw thank you for your feedback. We've been informed that this issue will be addressed in version 2.2.7-2
of the Cardinal library. I don't have an exact timeline available, but we will post here with updates.
We are having exact same issue and trying to support android 13. Please resolve this asap. Thank you.
java.lang.SecurityException: Settings key: <data_roaming> is only readable to apps with targetSdkVersion lower than or equal to: 32
at android.provider.Settings$NameValueCache.getStringForUser(Settings.java:3081)
at android.provider.Settings$Global.getStringForUser(Settings.java:15854)
at android.provider.Settings$Global.getString(Settings.java:15837)
at com.cardinalcommerce.a.setInputType.<init>(:170)
at com.cardinalcommerce.a.setEditableFactory.<init>(:23)
at com.cardinalcommerce.a.setFreezesText.cca_continue(:53)
at com.cardinalcommerce.cardinalmobilesdk.Cardinal.configure(:5039)
at com.braintreepayments.api.CardinalClient.configurationCardinal(CardinalClient.java:62)
at com.braintreepayments.api.CardinalClient.initialize(CardinalClient.java:21)
at com.braintreepayments.api.ThreeDSecureClient$1.onResult(ThreeDSecureClient.java:171)
at com.braintreepayments.api.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:41)
at com.braintreepayments.api.BraintreeClient$1.onAuthorizationResult(BraintreeClient.java:165)
at com.braintreepayments.api.AuthorizationLoader.loadAuthorization(AuthorizationLoader.java:20)
at com.braintreepayments.api.BraintreeClient.getAuthorization(BraintreeClient.java:174)
at com.braintreepayments.api.BraintreeClient.getConfiguration(BraintreeClient.java:161)
at com.braintreepayments.api.ThreeDSecureClient.performVerification(ThreeDSecureClient.java:133)
at com.braintreepayments.api.DropInClient.performThreeDSecureVerification(DropInClient.java:208)
at com.braintreepayments.api.DropInActivity.lambda$onVaultedPaymentMethodSelected$14(DropInActivity.java:462)
at com.braintreepayments.api.DropInActivity.$r8$lambda$2a4OT2G88M6GefuqqDiIov6oHdA(Unknown Source:0)
at com.braintreepayments.api.DropInActivity$$ExternalSyntheticLambda16.onResult(Unknown Source:4)
at com.braintreepayments.api.DropInClient.lambda$shouldRequestThreeDSecureVerification$3(DropInClient.java:242)
at com.braintreepayments.api.DropInClient.$r8$lambda$R4OsB6pR5nb7oq2_-9isojFxcZo(Unknown Source:0)
at com.braintreepayments.api.DropInClient$$ExternalSyntheticLambda4.onResult(Unknown Source:4)
at com.braintreepayments.api.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:41)
at com.braintreepayments.api.BraintreeClient$1.onAuthorizationResult(BraintreeClient.java:165)
at com.braintreepayments.api.AuthorizationLoader.loadAuthorization(AuthorizationLoader.java:20)
at com.braintreepayments.api.BraintreeClient.getAuthorization(BraintreeClient.java:174)
at com.braintreepayments.api.BraintreeClient.getConfiguration(BraintreeClient.java:161)
at com.braintreepayments.api.DropInClient.shouldRequestThreeDSecureVerification(DropInClient.java:234)
at com.braintreepayments.api.DropInActivity.onVaultedPaymentMethodSelected(DropInActivity.java:460)
at com.braintreepayments.api.DropInActivity.onDropInEvent(DropInActivity.java:152)
at com.braintreepayments.api.DropInActivity.lambda$onCreate$0(DropInActivity.java:88)
at com.braintreepayments.api.DropInActivity.$r8$lambda$ANNKULh2SPzCVPRQiitWKemcXKo(Unknown Source:0)
at com.braintreepayments.api.DropInActivity$$ExternalSyntheticLambda0.onFragmentResult(Unknown Source:2)
at androidx.fragment.app.FragmentManager$LifecycleAwareResultListener.onFragmentResult(FragmentManager.java:235)
at androidx.fragment.app.FragmentManager.setFragmentResult(FragmentManager.java:866)
at com.braintreepayments.api.BottomSheetFragment.sendDropInEvent(BottomSheetFragment.java:176)
at com.braintreepayments.api.BottomSheetFragment.onDropInEvent(BottomSheetFragment.java:171)
at com.braintreepayments.api.BottomSheetFragment.lambda$onCreateView$0(BottomSheetFragment.java:65)
at com.braintreepayments.api.BottomSheetFragment.$r8$lambda$SdBK_QbNK_fNDXMDHLJZFHPWc2M(Unknown Source:0)
at com.braintreepayments.api.BottomSheetFragment$$ExternalSyntheticLambda1.onFragmentResult(Unknown Source:2)
2022-09-19 13:34:28.849 20407-20407/com.kfcaus.ordering.beta E/AndroidRuntime: at androidx.fragment.app.FragmentManager$LifecycleAwareResultListener.onFragmentResult(FragmentManager.java:235)
at androidx.fragment.app.FragmentManager.setFragmentResult(FragmentManager.java:866)
at com.braintreepayments.api.DropInFragment.sendDropInEvent(DropInFragment.java:9)
at com.braintreepayments.api.SupportedPaymentMethodsFragment.onVaultedPaymentMethodSelected(SupportedPaymentMethodsFragment.java:197)
at com.braintreepayments.api.VaultedPaymentMethodsAdapter.lambda$onBindViewHolder$0(VaultedPaymentMethodsAdapter.java:37)
at com.braintreepayments.api.VaultedPaymentMethodsAdapter.$r8$lambda$-3EOj-NfJbB-cLaNoFA1RRn6AEM(Unknown Source:0)
at com.braintreepayments.api.VaultedPaymentMethodsAdapter$$ExternalSyntheticLambda0.onClick(Unknown Source:4)
at android.view.View.performClick(View.java:7506)
at android.view.View.performClickInternal(View.java:7483)
at android.view.View.-$$Nest$mperformClickInternal(Unknown Source:0)
at android.view.View$PerformClick.run(View.java:29335)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7898)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
@sshropshire - is there any update to this? We are having the same issue:
Settings key: <data_roaming> is only readable to apps with targetSdkVersion lower than or equal to: 32
It's concerning how many issues we've bumped into regarding the Cardinal SDK and lack of support and proper testing for newer android versions. #594 seemingly is the same flavor of issue.
I have definitely agree with @josephyanks. Braintree had Cardinal SDK issue with android 12 last year. Now it is same with android 13. Do we have to wait until next year for the resolution?
It's worth pointing out that this issue is specific to SDK 32, which is android 12 (has been out for years). Just very frustrating, and costs us real $$.
Same here, this is a big blocker to updating the SDK for us, using drop-in with version 6.3.0
.
Hi all @josephyanks @bm185178 @joeboyscout04 the only update we've received is that a new release is coming soon. I agree this should have been caught much sooner. On the other hand, with API 32 still technically considered to be Android 12 this feels a lot like a hidden breaking change from Google, which can also happen from time to time.
Also not making any excuses here, we'll work to integrate the fixed version as soon as it becomes available. We didn't provide explicit support for Android 12L with our SDK because we didn't see it as a huge ask from the community.
I want to double down and say thanks to y'all for being both patient and vocal, this helps us to escalate the issue with Cardinal. I'm hoping we'll receive the update sometime soon in the coming weeks.
@sshropshire
Hi, I see a changelog of the cardinal it`s changed )
When do you are planning to give us a new version?
Hello all -
This has been fixed by our 3rd Party MPI Cardinal. The fix has been released in version 4.18.0. Please let us know if you continue to run into this issue with their fix included after updating the SDK.