2014-03-25 137 views
-1
class MyWebClient extends WebViewClient { 
    @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      // TODO Auto-generated method stub 
      super.onPageStarted(view, url, favicon); 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      // TODO Auto-generated method stub 

       return false; 

     } 
    } 

PreviewCallback previewCb = new PreviewCallback() { 
     public void onPreviewFrame(byte[] data, Camera camera) { 
      Camera.Parameters parameters = camera.getParameters(); 
      Size size = parameters.getPreviewSize(); 

      Image barcode = new Image(size.width, size.height, "Y800"); 
      barcode.setData(data); 

      int result = scanner.scanImage(barcode); 

      if (result != 0) { 
       previewing = false; 
       mCamera.setPreviewCallback(null); 
       mCamera.stopPreview(); 

       SymbolSet syms = scanner.getResults(); 
       for (Symbol sym : syms) { 

        String value = new String(sym.getData()); 
        if(value.startsWith("http://192.168.1.6")){ 

        scanText.setText("QR Code result: " + value); 
        barcodeScanned = true; 
        WebView webView = (WebView) findViewById(R.id.web_engine); 
        webView.setWebViewClient(new MyWebClient()); 
        webView.getSettings().setJavaScriptEnabled(true); 
        webView.loadUrl(value); 

        } 
        else{ 
         scanText.setText("QR Code result 2: " + value); 
         barcodeScanned = true; 
         } 
        TextView tv = (TextView) findViewById(R.id.scanText); 
        tv.setMovementMethod(LinkMovementMethod.getInstance()); 


       } 

      } 


     } 
    }; 

这里是logcat的:在网页视图QR码扫描仪

03-25 20:05:22.714: E/AndroidRuntime(14267): FATAL EXCEPTION: main 
03-25 20:05:22.714: E/AndroidRuntime(14267): java.lang.NullPointerException 
03-25 20:05:22.714: E/AndroidRuntime(14267): at net.sourceforge.zbar.android.CameraTest.CameraTestActivity$2.onPreviewFrame(CameraTestActivity.java:201) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:864) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at android.os.Looper.loop(Looper.java:176) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at android.app.ActivityThread.main(ActivityThread.java:5317) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at java.lang.reflect.Method.invokeNative(Native Method) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at java.lang.reflect.Method.invoke(Method.java:511) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
03-25 20:05:22.714: E/AndroidRuntime(14267): at dalvik.system.NativeStart.main(Native Method) 

我有一个QR码扫描应用程序。当扫描的qr代码从http://192.168.1.6开始时,我的应用程序停止。我想在web浏览器中显示此链接,而不是在浏览器中显示。但是,如果网址不是以http://192.168.1.6开头,它会在另一个浏览器中打开链接。

+0

如果应用程序崩溃,请发布stacktrace。否则,告诉我们什么不工作。 – mikejonesguy

+0

网络视图无法正常工作。 – duderbear

回答

0

您需要正确实施WebViewClient.shouldOverrideUrlLoading功能。

首先,请不要致电loadUrl。 URL加载正在进行中,并再次调用它是不正确的。

其次,你可以检查被加载(它作为参数传递给shouldOverrideUrlLoadinghttp://192.168.1.6,然后改做取决于它是否存在或不正确的事情的逻辑。这听起来像,如果它的存在,你的网址只是想return false以处理WebView中的负载。否则,你要创建和发送ACTION_VIEW意向加载在设备的浏览器的URL并返回true。

请参阅http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView,java.lang.String中)和http://developer.android.com/reference/android/content/Intent.html

+0

我应该把webview放在一个单独的xml文件或主要的xml文件中吗? – duderbear

+0

它不工作。 – duderbear

+0

在主XML文件中放置WebView应该没问题。看起来您现在有两个问题,即您粘贴了堆栈跟踪。什么不工作?你是否看到崩溃或它不覆盖URL加载到192.168.1.6,或两者? – ksasq

0

根据您的堆栈跟踪,您的201路相机上有NullPointerException TestActivity:

java.lang.NullPointerException at net.sourceforge.zbar.android.CameraTest.CameraTestActivity$2.onPreviewFrame(CameraTestActivity.java:201) 

如果您想发布包含此行的代码,我可以帮助您追踪它。