У меня возникла эта странная проблема, и я не нашел никакой помощи в Интернете.Android Pay: BadParcelableExcaption для com.google.android.gms.wallet.shared.BuyFlowConfig
У меня есть BaseActivity
, где у меня есть следующий код:
@Override
public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
intent.putExtra(Constants.ARG_FROM_ACTIVITY, getClass().getName());
super.startActivityForResult(intent, requestCode, options);
}
Теперь я пытаюсь интегрировать Android Pay в моем PaymentActivity
следующим образом:
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();
}
Но, когда я пытаюсь выполните приведенный выше код, я получаю следующий сбой:
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)
Линия крушения, где я положил intent.putExtra
в мой BaseActivity
.
Странная часть заключается в том, что приложение терпит крах, потому что оно не может разобрать com.google.android.gms.wallet.shared.BuyFlowConfig
. Но он терпит неудачу, потому что я пытаюсь поставить лишний в том же intent
в моей BaseActivity? Я очень смущен. Любая помощь приветствуется.
любые обновления по этому вопросу? У меня похожие проблемы. – Intern