braintree_android icon indicating copy to clipboard operation
braintree_android copied to clipboard

Crash ThreeDSecureClient

Open auxDK opened this issue 2 years ago • 5 comments

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)

auxDK avatar Aug 20 '22 12:08 auxDK

Hi, guys! Are there any estimates you can share with us on when this is potentially fixed?

auxDK avatar Aug 23 '22 10:08 auxDK

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.

sshropshire avatar Aug 23 '22 14:08 sshropshire

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.

ersen-lw avatar Sep 05 '22 10:09 ersen-lw

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.

sshropshire avatar Sep 08 '22 21:09 sshropshire

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)

bm185178 avatar Sep 19 '22 17:09 bm185178

@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.

josephyanks avatar Oct 04 '22 14:10 josephyanks

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?

bm185178 avatar Oct 04 '22 16:10 bm185178

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 $$.

josephyanks avatar Oct 04 '22 17:10 josephyanks

Same here, this is a big blocker to updating the SDK for us, using drop-in with version 6.3.0.

joeboyscout04 avatar Oct 07 '22 14:10 joeboyscout04

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 avatar Oct 11 '22 13:10 sshropshire

@sshropshire Hi, I see a changelog of the cardinal it`s changed ) When do you are planning to give us a new version? Screenshot from 2022-10-18 14-01-02

auxDK avatar Oct 18 '22 11:10 auxDK

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.

jaxdesmarais avatar Oct 19 '22 21:10 jaxdesmarais