簡體   English   中英

非活動類中的zxing意向句柄

[英]zxing intent handle in non-Activity class

我想在非Activity類中啟動和處理ZXing意圖。 但我不知道如何在本課程中掌握Result。

該代碼在Xamarin中鍵入,但並不重要。

ScannerZXing.cs:

Intent intenScanner;

public ScannerZXing()
{
     intentScanner = ScanIntent.GetZXingScanIntent();
}

public override void Scan(Activity current)
{
     //this.StartActivityForResult(this.intentScanner, 0); // error: Java.Lang.NullPointerExceptionn

    //current.StartActivityForResult(this.intentScanner, 0); // OK, but I have to handle result in MainActivity (I don't want it.)
}

protected override void OnActivityResult(int requestCode, [Android.Runtime.GeneratedEnumAttribute()] Android.App.Result resultCode, Android.Content.Intent intent)
{
     base.OnActivityResult(requestCode, resultCode, intent);
     //....
}

MainClass.cs:

protected override void OnCreate(Bundle bundle)
{

     //....         

     var scanner = new ScannerZXing();

     Button btnScan = this.FindViewById<Button>(Resource.Id.btnScan);
     btnScan.Click += delegate
     {
          scanner.Scan(this);
     }
     //....
}

如果我在MainActivity中執行OnActivityResult,它將起作用。 但是我想將“掃描”邏輯移到單獨的類中。

您可能只是對zxing有所了解。

https://www.nuget.org/packages/ZXing.Net.Mobile

    private async Task<string> Scan()
    {
        var scanner = new ZXing.Mobile.MobileBarcodeScanner() { BottomText = "Place red line on QR image to scan", TopText = "Place red line on QR image to scan", CancelButtonText = "Cancel scan", CameraUnsupportedMessage = "Camera not availabe on device" };
        var scanResults = await scanner.Scan();
        return scanresults;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM