嗨,我知道如何导入一个最小的Android库项目来扫描二维码,但在扫描了二维码后,我希望得到二维码得到的结果(例如网址),但我真的不喜欢&#39 ;我知道如何检索结果,这就是我要求你帮助的原因。
我试图使用它:https://github.com/embarkmobile/zxing-android-minimal#custom-layout
我用它来启动扫描仪:
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setCaptureLayout(R.layout.custom_layout);
integrator.initiateScan();
提前致谢 我为webview做了这个
wb = (WebView)findViewById(R.id.webView2);
wb.loadUrl(re);
答案 0 :(得分:28)
First
,您的Activity必须实现方法Activity.onActivityResult(int, int, Intent)
并包含一行代码:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanResult != null) {
// handle scan result
}
// else continue with any other code you need in the method
...
}
这是您处理扫描结果的地方。
Second
,只需调用此方法以响应用户操作,即可开始扫描过程:
IntentIntegrator integrator = new IntentIntegrator(yourActivity);
integrator.initiateScan();
请注意,如果提示用户下载应用程序,initiateScan()
将返回一个非空的AlertDialog。这使得调用应用程序可以管理对话框。特别是,理想情况下,如果对话框在Activity.onPause()
方法中仍处于活动状态,则该应用程序会将其取消。
您可以使用setTitle(String)
自定义此下载提示对话框的标题(或使用setTitleByID(int)按字符串资源ID设置标题。)同样,提示消息和是/否按钮标签可以改变。
Finally
,您可以使用addExtra(String, Object)
向用于调用扫描程序的Intent添加更多参数。这可用于设置此简化API未直接公开的其他选项。
默认情况下,这只会允许已知响应此意图的应用程序正确执行此操作。可以使用setTargetApplications(List)设置允许响应的应用程序。例如,设置为TARGET_BARCODE_SCANNER_ONLY
仅定位条形码扫描仪应用程序本身。
有关详细信息,请参阅here。
示例代码:
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
public class MainActivity extends Activity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Scanner
mButton = (Button) findViewById(R.id.assistant_button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.initiateScan();
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanResult != null) {
String re = scanResult.getContents();
Log.d("code", re);
}
// else continue with any other code you need in the method
}
}
xml中的一个按钮,然后单击它,扫描条形码,它将返回条形码的原始内容。