Ich habe dieses seltsame Problem und ich konnte online keine Hilfe finden.Android Pay: BadParcelableExcaption für com.google.android.gms.wallet.shared.BuyFlowConfig
Ich habe meine BaseActivity
, wo ich den folgenden Code haben:
@Override
public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
intent.putExtra(Constants.ARG_FROM_ACTIVITY, getClass().getName());
super.startActivityForResult(intent, requestCode, options);
}
Nun, ich versuche, in meinem PaymentActivity
Android Pay zu integrieren wie folgt:
private void showWallet() {
WalletFragmentStyle walletFragmentStyle = new WalletFragmentStyle()
.setBuyButtonText(WalletFragmentStyle.BuyButtonText.BUY_WITH)
.setBuyButtonAppearance(WalletFragmentStyle.BuyButtonAppearance.ANDROID_PAY_LIGHT)
.setBuyButtonWidth(WalletFragmentStyle.Dimension.MATCH_PARENT);
WalletFragmentOptions walletFragmentOptions = WalletFragmentOptions.newBuilder()
.setEnvironment(WalletConstants.ENVIRONMENT_TEST)
.setFragmentStyle(walletFragmentStyle)
.setTheme(WalletConstants.THEME_LIGHT)
.setMode(WalletFragmentMode.BUY_BUTTON)
.build();
SupportWalletFragment supportWalletFragment = SupportWalletFragment.newInstance(walletFragmentOptions);
MaskedWalletRequest maskedWalletRequest = MaskedWalletRequest.newBuilder()
.setPaymentMethodTokenizationParameters(PaymentMethodTokenizationParameters.newBuilder()
.setPaymentMethodTokenizationType(PaymentMethodTokenizationType.PAYMENT_GATEWAY)
.addParameter("gateway", "stripe")
.addParameter("stripe:publishableKey", "<my-key>")
.addParameter("stripe:version", Stripe.VERSION)
.build())
.setShippingAddressRequired(false)
.setEstimatedTotalPrice("1.00")
.setCurrencyCode("USD")
.build();
WalletFragmentInitParams initParams = WalletFragmentInitParams.newBuilder()
.setMaskedWalletRequest(maskedWalletRequest)
.setMaskedWalletRequestCode(MASKED_WALLET_REQUEST_CODE)
.build();
supportWalletFragment.initialize(initParams);
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.container, supportWalletFragment, WALLET_FRAGMENT_TAG)
.commit();
}
Aber, wenn ich versuche, Führen Sie den obigen Code, ich bekomme den folgenden Absturz:
android.os.BadParcelableException:
ClassNotFoundException when unmarshalling: com.google.android.gms.wallet.shared.BuyFlowConfig
at android.os.Parcel.readParcelableCreator(Parcel.java:2432)
at android.os.Parcel.readParcelable(Parcel.java:2358)
at android.os.Parcel.readValue(Parcel.java:2264)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2614)
at android.os.BaseBundle.unparcel(BaseBundle.java:221)
at android.os.BaseBundle.putString(BaseBundle.java:430)
at android.content.Intent.putExtra(Intent.java:6394)
at com.test.BaseActivity.startActivityForResult(BaseActivity.java:122)
at android.support.v4.app.ActivityCompatJB.startActivityForResult(ActivityCompatJB.java:31)
at android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:163)
at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:948)
at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:1057)
at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:947)
at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:936)
at com.google.android.gms.dynamic.zzh.startActivityForResult(Unknown Source)
at com.google.android.gms.dynamic.zzc$zza.onTransact(Unknown Source)
at android.os.Binder.transact(Binder.java:387)
at lvg.a(:com.google.android.gms:728)
at com.google.android.gms.wallet.dynamite.fragment.b.a(:com.google.android.gms:551)
at aaee.handleMessage(:com.google.android.gms:210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Die Crash-Linie ist, wo ich intent.putExtra
in meinem BaseActivity
setzen.
Der komische Teil ist, dass die App abstürzt, weil sie com.google.android.gms.wallet.shared.BuyFlowConfig
nicht unmarshall kann. Aber es scheitert, weil ich versuche, ein zusätzliches in derselben intent
in meiner BaseActivity zu setzen? Ich bin sehr verwirrt. Jede Hilfe wird geschätzt.
irgendwelche Updates zu diesem Thema? Ich habe ähnliche Probleme. – Intern