Zxing QR扫描仪onActivityResult未在片段中调用[重复]

Posted

技术标签:

【中文标题】Zxing QR扫描仪onActivityResult未在片段中调用[重复]【英文标题】:Zxing QR scanner onActivityResult not called in fragment [duplicate] 【发布时间】:2019-04-29 22:49:18 【问题描述】:

我正在使用zxing android 扫描二维码。

在 onCreateView 中初始化 HomeFragment 中的扫描对象:

//intializing scan object
//qrScan = new IntentIntegrator(this.getActivity()); // this is for activity
qrScan = IntentIntegrator.forSupportFragment(this); // this is for fragment

要获得扫描结果:

// Get the results:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(result != null) 
    if(result.getContents() == null) 
        Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
     else 
        Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
    
 else 
    super.onActivityResult(requestCode, resultCode, data);

但是,我得到:

错误:HomeFragment 中的 onActivityResult(int,int,Intent) 不能 覆盖片段中的 onActivityResult(int,int,Intent) 试图 分配较弱的访问权限;是公开的

将其从“受保护”更改为公开后,在 HomeFragment 中没有调用 onActivityResult。

【问题讨论】:

***.com/questions/20013213/… 您是否在托管 Activity 中覆盖了 onActivityResult()?如果是这样,您是否在那里调用super 方法? 谢谢 Mike M。我错过了在 Activity 中调用 super 方法。能够抓取二维码内容。但是我很难扫描一个简单的二维码(“hello world android”文本),有什么方法可以提高捕获速度吗?我在 AndroidManifest.xml 中添加了 "android:hardwareAccelerated="true"" 但它仍然很慢。 抱歉,这是一个单独的问题。我没用过ZXing。我刚刚检查了您关于Fragment 结果问题的问题。 谢谢@MikeM。发现是调试器造成的。现在运行顺利 【参考方案1】:

试试这个

IntentIntegrator scanIntegrator = IntentIntegrator.forSupportFragment(YourFragmentClass.this);
scanIntegrator.setPrompt("Scan");
scanIntegrator.setBeepEnabled(true);
scanIntegrator.setBarcodeImageEnabled(true);
scanIntegrator.initiateScan();

然后在onActivityResult

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) 
    super.onActivityResult(requestCode, resultCode, data);

    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
    if (scanningResult != null) 
        if (scanningResult.getContents() != null) 
            scanContent = scanningResult.getContents().toString();
            scanFormat = scanningResult.getFormatName().toString();
        

        Toast.makeText(getActivity(), scanContent + "   type:" + scanFormat, Toast.LENGTH_SHORT).show();

        textView.setText(scanContent + "    type:" + scanFormat);

     else 
        Toast.makeText(getActivity(), "Nothing scanned", Toast.LENGTH_SHORT).show();
    

你可以查看thisrepo

【讨论】:

以上是关于Zxing QR扫描仪onActivityResult未在片段中调用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Zxing QR扫描仪onActivityResult未在片段中调用[重复]

Android 系列 5 7使用Google ZXing条形码扫描器扫描条形码或QR码

Xamarin Forms QR 码扫描仪黑屏

仅显示使用 phonegap Barcodescanner Zxing based Plugin 创建的 QR 图像

Zxing 二维码扫描仪不适用于所有设备

利用Zxing扫描和产生二维码