获取条码扫描结果
我可以通过意图调用条形码扫描仪,但是当我尝试根据 这个,我在尝试构建解决方案时收到以下错误。
- 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)
{
}
}
}
I am able to invoke the barcode scanner via intents, but when I try to capture the values returned by the scan based on this, I get the following errors when trying to build the solution.
- Android.Content.Intent' does not contain a definition for 'getStringExtras' and no extension method 'getStringExtras' accepting a first argument of type 'Android.Content.Intent' could be found (are you missing a using directive or an assembly reference?)
- The name 'RESULT_CANCELED' does not exist in the current context
- The name 'RESULT_OK' does not exist in the current context
Here is my code for both invoking the scanner and trying to return results.
Click event is in onCreate. onActivityResult is a method in the same.cs, same class, same namespace as the scan.Click event.
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)
{
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里的问题是您的
onActivityResult
方法尚未从 Java 正确转换为 Android 的 Mono。它应该看起来更像:
翻译的亮点是:
The problem here is that your
onActivityResult
method has not been properly translated from Java to Mono for Android.It should look more like:
The highlights of the translation are:
尝试使用 zxing 提供的实用程序类,可以在 此处。如果未安装条形码扫描仪应用程序,这还可以防止您的应用程序崩溃。
Try using the utility class provided by zxing, which can be found here. This will also prevent your application from crashing if the Barcode Scanner app is not installed.