我尝试使用带有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();
});
}
}