0

我尝试使用 card.io 和 Xamarin (android) 检索我的卡号,该函数执行正确,但是这一行,总是返回 null

var scanResult = data.GetParcelableExtra(CardIOActivity.ExtraScanResult).JavaCast<CreditCard>();

我想知道的另一件事是,当我将卡放在相机前时,它会自动返回吗?因为,如果是这样,它不会发生,只是当我点击键盘时它会调用 ActivityResult。

这是我的全部代码,对于仍然存在的任何疑问。

protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);

        // Set our view from the "main" layout resource
        SetContentView (Resource.Layout.Main);

        // Get our button from the layout resource, and attach an event to it
        Button button = FindViewById<Button> (Resource.Id.myButton);

        button.Click += delegate {
            var scanIntent = new Intent(this, typeof (CardIOActivity));

            scanIntent.PutExtra(CardIOActivity.ExtraAppToken, CARDIO_TOKEN);

            scanIntent.PutExtra(CardIOActivity.ExtraRequireExpiry, true);   
            scanIntent.PutExtra(CardIOActivity.ExtraRequireCvv, false);         
            scanIntent.PutExtra(CardIOActivity.ExtraRequirePostalCode, false); 
            scanIntent.PutExtra(CardIOActivity.ExtraUseCardioLogo, true);
            scanIntent.PutExtra(CardIOActivity.ExtraSuppressConfirmation, true);
            scanIntent.PutExtra(CardIOActivity.ExtraSuppressManualEntry, true);

            StartActivityForResult(scanIntent, 100);
        };
    }

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        base.OnActivityResult(requestCode, resultCode, data);

        if (data != null && data.HasExtra(CardIOActivity.ExtraScanResult))
        {
            var scanResult = data.GetParcelableExtra(CardIOActivity.ExtraScanResult).JavaCast<CreditCard>();
            RunOnUiThread(() =>
                {
                    var sb = new StringBuilder();

                    sb.AppendLine("card number " + scanResult.CardNumber);
                    sb.AppendLine("cvv " + scanResult.Cvv);
                    sb.AppendLine("exipry " + scanResult.ExpiryMonth.ToString() + "/" + scanResult.ExpiryYear.ToString());
                    sb.AppendLine("zip " + scanResult.Zip);

                    var ad = new AlertDialog.Builder(this);
                    ad.SetTitle("New card added");
                    ad.SetMessage(sb.ToString());
                    ad.SetPositiveButton("OK", delegate
                        {
                            ad.Dispose();
                        });
                    ad.Show();
                });
        }
    }
4

0 回答 0