美好的一天!我在android marshmallow和nougat中使用qr代码扫描程序的问题使用我在项目中添加为依赖项的库,相机显示白屏。代码在棒棒糖和kitkat中完美运行。如果我有什么遗漏或者我会做些什么来让它发挥作用,请告诉我。我在下面粘贴了我的代码片段。如果你给我一些时间来注意我的担忧,我感到很高兴。我已经看到了类似我的问题,但它并没有帮助我解决问题,或者我已经错误地实现了它。先感谢您。
我有zxing jar库用于生成qr代码,我使用了我.dm7.barcodescanner:zxing:1.8.4扫描qr代码:
dependency {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile files('libs/zxing-2.1.jar')
compile('me.dm7.barcodescanner:zxing:1.8.4'){
exclude group: 'com.google.zxing'
}
}
打开相机的活动:
public class ScanQRCodeActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {
private String strDataEncrypted;
private ZXingScannerView mScannerView;
public static String strEncrypt;
public static String strEncrypted;
public static String strIV;
public static boolean isScanSuccess = false;
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
mScannerView = new ZXingScannerView(this);
setContentView(mScannerView);
}
@Override
public void onResume() {
super.onResume();
mScannerView.setResultHandler(this);
mScannerView.startCamera();
}
@Override
public void onPause() {
super.onPause();
mScannerView.stopCamera();
}
@Override
public void handleResult(Result result) {
strDataEncrypted = result.getText();
Log.wtf("handleResult", strDataEncrypted);
String[] strSplit = strDataEncrypted.split("\\|\\|");
strEncrypted = strSplit[0].trim();
strIV = strSplit[1];
CryptLibHelper cryptLibHelper = new CryptLibHelper();
cryptLibHelper.decrypt(strEncrypted, strIV, new CryptLibHelper.CryptLibDecryptCallback() {
@Override
public void onDecryptFailed(String str_message) {
Log.wtf("onDecryptFailed", str_message);
}
@Override
public void onDecryptSuccess(String str_message) {
if (str_message.contains("}")) {
strEncrypt = str_message.replace("}", "");
Log.wtf("onDecryptSuccess", strEncrypt);
}
}
});
onBackPressed();
isScanSuccess = true;
mScannerView.resumeCameraPreview(this);
}
}
答案 0 :(得分:3)
您是否在应用中添加了CAMERA权限检查?从棉花糖开始,你需要询问用户一些权限。
您可以先尝试从设备设置手动授予您的应用权限。
答案 1 :(得分:2)
我经常遇到这个问题,我的问题是我的应用程序请求相机权限太晚了!确保您的应用程序正在之前请求相机权限。