Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Crash ThreeDSecureClient #585

Closed
auxDK opened this issue Aug 20, 2022 · 12 comments
Closed

Crash ThreeDSecureClient #585

auxDK opened this issue Aug 20, 2022 · 12 comments

Comments

@auxDK
Copy link

auxDK commented Aug 20, 2022

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
Copy link
Author

auxDK commented Aug 23, 2022

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

@sshropshire
Copy link
Contributor

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.

@ersen-lw
Copy link

ersen-lw commented Sep 5, 2022

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.

@sshropshire
Copy link
Contributor

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.

@bm185178
Copy link

bm185178 commented Sep 19, 2022

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)

@josephyanks
Copy link
Contributor

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

@bm185178
Copy link

bm185178 commented Oct 4, 2022

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?

@josephyanks
Copy link
Contributor

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

@joeboyscout04
Copy link

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

@sshropshire
Copy link
Contributor

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.

@auxDK
Copy link
Author

auxDK commented Oct 18, 2022

@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

@jaxdesmarais
Copy link
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants