ZXing QR 代码扫描仪嵌入在扫描过程中按下后退按钮
ZXing QR code scanner embedded pressing back button during scan issue
我有以下场景:
我使用 Gradle 的 Maven 存储库将 ZXing 集成到我的 Android 应用程序中。
在我的扫描 activity 中,代码如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scan_layout);
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
integrator.setPrompt(" ");
integrator.setScanningRectangle(700, 700);
integrator.setResultDisplayDuration(0);
integrator.setCameraId(0); // Use a specific camera of the device
integrator.initiateScan();
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//retrieve scan result
IntentResult scanningResult = null;
scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanningResult != null) {
//we have a result
String scanContent = scanningResult.getContents();
if(isConnected()) {
requestdata("http://rm360project-001-site1.smarterasp.net/api/endpoint", scanContent);
}else {
Toast.makeText(this, "Internet Connection not available", Toast.LENGTH_LONG).show();
}
} else {
Intent getMainScreen = new Intent(ScanScreen.this, MainActivity.class);//pentru test, de sters
startActivity(getMainScreen);
}
}
我希望它的工作方式:
1.如果我扫描二维码,调用函数requestdata
2. 如果我在扫描过程中按返回键,转到 MainActivity
问题:
即使当我在我的设备上按回时,函数 requestdata 也会被调用,我认为是因为 scaningResult 永远不会为 null。按下后退时它不应该为空吗?
你知道为什么会这样吗?
谢谢!
不知道您是否还有兴趣,但是...
只需更改此行:
if (scanningResult != null) {
为此:
if (scanningResult != null && resultCode==RESULT_OK) {
由于某些原因,简单的 scanningResult 实际上并不像 ZXing 团队所建议的那样 return null,即使取消了 Intent。
我有以下场景: 我使用 Gradle 的 Maven 存储库将 ZXing 集成到我的 Android 应用程序中。
在我的扫描 activity 中,代码如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.scan_layout);
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
integrator.setPrompt(" ");
integrator.setScanningRectangle(700, 700);
integrator.setResultDisplayDuration(0);
integrator.setCameraId(0); // Use a specific camera of the device
integrator.initiateScan();
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//retrieve scan result
IntentResult scanningResult = null;
scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanningResult != null) {
//we have a result
String scanContent = scanningResult.getContents();
if(isConnected()) {
requestdata("http://rm360project-001-site1.smarterasp.net/api/endpoint", scanContent);
}else {
Toast.makeText(this, "Internet Connection not available", Toast.LENGTH_LONG).show();
}
} else {
Intent getMainScreen = new Intent(ScanScreen.this, MainActivity.class);//pentru test, de sters
startActivity(getMainScreen);
}
}
我希望它的工作方式:
1.如果我扫描二维码,调用函数requestdata
2. 如果我在扫描过程中按返回键,转到 MainActivity
问题: 即使当我在我的设备上按回时,函数 requestdata 也会被调用,我认为是因为 scaningResult 永远不会为 null。按下后退时它不应该为空吗? 你知道为什么会这样吗? 谢谢!
不知道您是否还有兴趣,但是...
只需更改此行:
if (scanningResult != null) {
为此:
if (scanningResult != null && resultCode==RESULT_OK) {
由于某些原因,简单的 scanningResult 实际上并不像 ZXing 团队所建议的那样 return null,即使取消了 Intent。