android - 从条形码扫描中获取结果

标签 android xamarin.android zxing

我可以通过 Intent 调用条形码扫描器,但是当我 try catch 基于 this 的扫描返回的值时,我在尝试构建解决方案时遇到以下错误。

  • Android.Content.Intent' 不包含 'getStringExtras' 的定义,并且找不到接受类型为 'Android.Content.Intent' 的第一个参数的扩展方法 'getStringExtras'(您是否缺少 using 指令或装配引用?)
  • 名称“RESULT_CANCELED”在当前上下文中不存在
  • 当前上下文中不存在名称“RESULT_OK”

这是我调用扫描仪和尝试返回结果的代码。 点击事件在onCreate中。 onActivityResult 是与 scan.Click 事件在同一个.cs、同一个类、同一个命名空间中的一个方法。

    Button scan = (Button)FindViewById(Resource.Id.scan);
        scan.Click += (o, e) =>
        {
            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.SetPackage("com.google.zxing.client.android");
            intent.PutExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
            StartActivityForResult(intent, 0);
        };

    public void onActivityResult(int requestCode, int resultCode, Intent intent)
    {
        if (requestCode == 0)
        {
            if (resultCode == RESULT_OK)
            {
                String contents = intent.getStringExtra("SCAN_RESULT");
                String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            }
            else if (resultCode == RESULT_CANCELED)
            {

            }
        }
    }

最佳答案

这里的问题是您的 onActivityResult 方法没有从 Java 正确转换为 Android 的 Mono。

它应该看起来更像:

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
    if (requestCode == 0)
    {
        if (resultCode == Result.Ok)
        {
            String contents = data.GetStringExtra("SCAN_RESULT");
            String format = data.GetStringExtra("SCAN_RESULT_FORMAT");
        }
        else if (resultCode == Result.Canceled)
        {

        }
    }
}

翻译的亮点是:

  1. OnActivityResult 更正签名(并覆盖)
  2. 使用Result枚举
  3. Java 中的getStringExtra 方法是GetStringExtra在 C# 中

关于android - 从条形码扫描中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8649160/

相关文章:

android - 无法将标题 View 添加到列表 - setAdapter 已被调用

c# - 如何在 Android 的 Mono 中使用 Runnable

android - Android 上带有彩色边框的 Xamarin Forms Entry

android - 如何通过 "Is Library"选项将 zxing android 项目包含到其他 android 项目?

java - Android Espresso 测试中的 stub /模拟意图

java - 检查 dir 存在和 dir contains 在 dropbox api 上不起作用

android - 保存图片到mysql

java - 如何将 HttpUrlConnection 的逻辑拆分为多个方法?

xamarin.android - Xamarin.Forms(UWP、Droid 和 iOS)的 Breeze#?

java - 将另一个类中的 zxing 条形码扫描器的结果发送到主类和 Activity