Card.io返回null

时间:2014-06-09 20:59:58

标签: android xamarin card.io

我尝试使用带有Xamarin(android)的card.io来检索我的卡号,该函数执行权限,但此行始终返回null

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

我想知道的另一件事是,当我把我的卡放在相机前面时,它会自动返回吗? Cuz,如果是这样,它就不会发生,就在我点击键盘时它会调用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();
                });
        }
    }

0 个答案:

没有答案