android - Webview in qr code scanner -
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(); (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()); } } } }; here logcat:
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): @ net.sourceforge.zbar.android.cameratest.cameratestactivity$2.onpreviewframe(cameratestactivity.java:201) 03-25 20:05:22.714: e/androidruntime(14267): @ android.hardware.camera$eventhandler.handlemessage(camera.java:864) 03-25 20:05:22.714: e/androidruntime(14267): @ android.os.handler.dispatchmessage(handler.java:99) 03-25 20:05:22.714: e/androidruntime(14267): @ android.os.looper.loop(looper.java:176) 03-25 20:05:22.714: e/androidruntime(14267): @ android.app.activitythread.main(activitythread.java:5317) 03-25 20:05:22.714: e/androidruntime(14267): @ java.lang.reflect.method.invokenative(native method) 03-25 20:05:22.714: e/androidruntime(14267): @ java.lang.reflect.method.invoke(method.java:511) 03-25 20:05:22.714: e/androidruntime(14267): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:1102) 03-25 20:05:22.714: e/androidruntime(14267): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:869) 03-25 20:05:22.714: e/androidruntime(14267): @ dalvik.system.nativestart.main(native method) i have qr code scanner app. app stops when qr code scanned starts http://192.168.1.6. want show link in webview not in browser. if url not start http://192.168.1.6 open link in browser.
you need implement webviewclient.shouldoverrideurlloading function correctly.
first, please not call loadurl it. url load in progress already, , calling again incorrect.
second, can check url being loaded (it's passed parameter shouldoverrideurlloading http://192.168.1.6 , change logic right thing depending on whether it's there or not. sounds if it's there want return false handle load in webview. otherwise, should create , send action_view intent load url in device's browser , return true.
please see 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
Comments
Post a Comment