2016-08-11 3 views
1

私はこの奇妙な問題を抱えており、オンラインでヘルプを見つけることができませんでした。Android Pay:com.google.android.gms.wallet.shared.BuyFlowConfigのBadParcelableExcaption

私は、私は次のコードを持っているBaseActivity持っている:私はしようとすると、

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(); 
    } 

をしかし:今すぐ

@Override 
public void startActivityForResult(Intent intent, int requestCode, Bundle options) { 
    intent.putExtra(Constants.ARG_FROM_ACTIVITY, getClass().getName()); 
    super.startActivityForResult(intent, requestCode, options); 
} 

を、私は次のように私のPaymentActivityにAndroidの支払いを統合しようとしています上記のコードを実行すると、次のクラッシュが発生します。

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) 

クラッシュラインは私がBaseActivityintent.putExtraを入れたところです。

com.google.android.gms.wallet.shared.BuyFlowConfigをアンマーシャリングできないため、アプリがクラッシュしています。しかし、それは私のBaseActivityの同じintentに余分を入れようとしているので失敗していますか?私は非常に混乱しています。どんな助けもありがとうございます。

+0

これに関するアップデートはありますか?私も同様の問題を抱えています。 – Intern

答えて

0

アプリのアクティビティがstartActivityForResultをオーバーライドし、PlayサービスAPIが起動しているインテントを変更しようとしている可能性があります。インテントを修正しようとすると、Androidはバンドルのコンテンツのアンパックを試みます。このエラーは、このクラスがClientLibraryに存在しないために発生する可能性があります。

関連する問題