从Android ZXing IntentIntegrator中提取结果

从Android ZXing IntentIntegrator中提取结果,android,android-intent,qr-code,zxing,Android,Android Intent,Qr Code,Zxing,我是ZXing的新手,一直在探索他们的API。 我见过,也见过 我知道扫描结果的详细信息在字符串“contents”中。我如何提取细节?查看QR生成器,有许多字段,如姓名、公司和电话号码。如何提取这些细节 我需要像这样的东西 //String extractedName = contents.getName() 对不起,我对这个很陌生。如果有人能提供详细的步骤,我将不胜感激。谢谢 测试活性 public Button.OnClickListener mScan = new Button.On

我是ZXing的新手,一直在探索他们的API。 我见过,也见过

我知道扫描结果的详细信息在字符串“contents”中。我如何提取细节?查看QR生成器,有许多字段,如姓名、公司和电话号码。如何提取这些细节

我需要像这样的东西

//String extractedName = contents.getName() 
对不起,我对这个很陌生。如果有人能提供详细的步骤,我将不胜感激。谢谢

测试活性

public Button.OnClickListener mScan = new Button.OnClickListener() {
public void onClick(View v) {
    IntentIntegrator.initiateScan(MenuActivity.this);
}
};


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");
        // Handle successful scan
        //How to get name from contents?

    } else if (resultCode == RESULT_CANCELED) {
        // Handle cancel
    }
}
}
如何提取这些细节

二维码只是一个图片形式的文件。正如你需要知道文件的格式才能使用它一样,你也需要知道二维码内容的格式才能使用它


包含有关他们看到的二维码内容类型的信息。

我已成功将其提取出来。扫描结果在字符串“contents”中。假设您扫描了一个带有名称和id的代码。该字符串将包含“名称”“id”,以空格分隔。您可以使用for循环来处理它。

首先检查字符串的开头,例如,它是否以类似“vcard”的(“xyxy”)开头。小心!“vcard”不是正确的字符串

如果是vCard,我会把它分成几个部分

String[] vCardContent = content.split("\n");

下一步是检查每个零件是否以例如“N:”别名“Name”开头

在IntentIntegrator中创建对象

protected void onCreate(Bundle savedInstanceState) { <br>
        super.onCreate(savedInstanceState);<br>
        setContentView(R.layout.activity_main);<br>
        new IntentIntegrator(this).initiateScan();<br>
    }
protectedvoid onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
新的IntentIntegrator(this).initiateScan();
}
重写onActivityResult方法

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent intent) { <br>
        IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);<br>
        if (scanResult != null) {<br>
            TextView t = (TextView) findViewById(R.id.textView2);<br>
            String data[] =scanResult.getContents().split("\n");<br>
            for(String k:data){<br>
                t.append(k+"\n");<br>
            }<br>
        }<br>

        // else continue with any other code you need in the method

    }
@覆盖
activityresult上的公共void(int请求代码、int结果代码、意图){
IntentResult scanResult=IntentIntegrator.parseActivityResult(请求代码、结果代码、意图);
如果(scanResult!=null){
TextView t=(TextView)findViewById(R.id.textView2);
字符串数据[]=scanResult.getContents().split(“\n”);
对于(字符串k:data){
t、 追加(k+“\n”);
}
}
//否则,请继续使用方法中所需的任何其他代码 }

在本文中,我使用getContents方法获取数据,并拆分该数据行。然后将该数据添加到textview2

,特别是用于将原始内容解析为结构化对象的项目。请有人帮我解决这个问题。