Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从条形码扫描中获取结果_Android_Xamarin.android_Zxing - Fatal编程技术网

Android 从条形码扫描中获取结果

Android 从条形码扫描中获取结果,android,xamarin.android,zxing,Android,Xamarin.android,Zxing,我可以通过intents调用条形码扫描仪,但是当我尝试捕获扫描返回的值时,在尝试构建解决方案时会出现以下错误 Android.Content.Intent不包含“getStringExtras”的定义,并且找不到接受“Android.Content.Intent”类型的第一个参数的扩展方法“getStringExtras”(是否缺少using指令或程序集引用?) 当前上下文中不存在名称“RESULT\u cancelled” 当前上下文中不存在名称“RESULT_OK” 下面是我调用扫描器和

我可以通过intents调用条形码扫描仪,但是当我尝试捕获扫描返回的值时,在尝试构建解决方案时会出现以下错误

  • Android.Content.Intent不包含“getStringExtras”的定义,并且找不到接受“Android.Content.Intent”类型的第一个参数的扩展方法“getStringExtras”(是否缺少using指令或程序集引用?)
  • 当前上下文中不存在名称“RESULT\u cancelled”
  • 当前上下文中不存在名称“RESULT_OK”
下面是我调用扫描器和尝试返回结果的代码。 单击事件在onCreate中。onActivityResult是与扫描位于同一.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)
        {

        }
    }
}
翻译的重点是:

  • 正确的签名(和覆盖)
  • 使用枚举
  • Java中的getStringExtra方法是C语言#

  • 这里的问题是,您的
    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)
            {
    
            }
        }
    }
    
    翻译的重点是:

  • 正确的签名(和覆盖)
  • 使用枚举
  • Java中的getStringExtra方法是C语言#

  • 尝试使用zxing提供的实用程序类,可以找到。如果未安装条形码扫描仪应用程序,这也将防止应用程序崩溃。

    请尝试使用zxing提供的实用程序类,该类可以找到。如果未安装条形码扫描仪应用程序,这也将防止应用程序崩溃。

    这种方法可能不是实现这一点的最佳方法,因为如果未安装zxing的条形码扫描仪,应用程序将崩溃。(他只需要先捕获ActivityNotFoundException或检查软件包,或者使用IntentIntegrator——很容易就不会被绊倒。)这种方法可能不是实现这一点的最佳方法,因为如果没有安装zxing的条形码扫描仪,您的应用程序将崩溃。(他只需捕获ActivityNotFoundException或首先检查包,或者使用IntentIntegrator即可——很容易不会被绊倒。)我很想用这种方式实现,但链接只是一大堆java,正如你所知,这不是我的驾驶室。如果有一个单机器人的例子,只要打开扫描仪,使用IntentIntegrator获得结果,那将非常感谢。我还没有在谷歌上找到一个。我很想用这种方式实现,但是link只是一大堆java,正如你所知,这不是我的驾驶室。如果有一个单机器人的例子,只要打开扫描仪,使用IntentIntegrator获得结果,那将非常感谢。我还没有在谷歌上找到一个。