我希望用户从他安装的应用中选择一个QR阅读器。这可以通过使用Intent.createChooser来完成。使用QR阅读器拍摄照片时,应将QR码发送回我的应用程序。这是我到目前为止所尝试的:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
String title = (String) getResources().getText(R.string.chooser_title);
Intent chooser = Intent.createChooser(intent, title);
startActivityForResult(chooser, CUSTOM_REQUEST_QR_SCANNER);
扫描仪无法正确启动,只显示QR码示例。我有一种感觉,intent.setType(“text / plain”)可能是错的? QR读卡器是什么类型的?或者我如何正确地以这种方式启动QR阅读器?
QR应用程序完成时我也有一个ActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == CUSTOM_REQUEST_QR_SCANNER) {
Log.d(TAG, "QR activity complete");
//Successful scan
if (resultCode == RESULT_OK) {
答案 0 :(得分:3)
替换
intent.setType("text/plain");
与
intent.setType("com.google.zxing.client.android.SCAN");
答案 1 :(得分:1)
关注此Demo并在您的项目中包含“ android-integration.jar ”,它还包含此.jar文件...您还可以从{{下载Zxing库3}}它将在您的应用中使用可用的QR Code Scanner。还有其他方法只是使用它,你将通过R和D了解其他。
或强>
使用此:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn_scan =(Button) findViewById(R.id.btn_scan);
btn_scan.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.initiateScan(IntentIntegrator.QR_CODE_TYPES);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (result != null) {
String contents = result.getContents();
if (contents != null) {
showDialog("Found QRcode", result.toString());
} else {
showDialog("NO QRcode Found", "The user gave up and pressed Back");
}
}
}
private void showDialog(String title, CharSequence message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(title);
builder.setMessage(message);
builder.setPositiveButton("OK", null);
builder.show();
}
并在项目属性java build path中包含相同的.jar文件。你可以从Here相同的链接下载.jar。