今天讲下TV端接二维码遇到的一些问题,由于是在微信平台申请的是以网站那种形式申请的,而不是服务号申请的,所以客户端显示的二维码是以网页的形式展现的,网页是用WebView加载实现的,但是我们的界面是这样的,
当然这背景上还有显示其他文字信息,我就没在这说明了,为什么这图片中间要做成透明的呢?由于WebView加载显示二维码其实是一个网页,而不是一张图片,所以当时就想到了这个方法,当时在做的过程中也遇到很多适配的问题,大部分都解决了,还是有小部分盒子适配确实不好做,所以这个版本产品要说改这个二维码,当时心想怎么弄,后来想到了一个办法,就是先读取二维码的连接,当然这个二维码的连接是来自后台给你的,因为这个要考虑到回调地址,这个回调地址就是你扫描了后微信会通知自己的服务器,然后自己请求到服务器拿当前扫描客户的微信数据,比如昵称,头像,城市等...,第二步是把网页版显示二维码通过IO把它读出来后,去摘取显示二维码的地址,当然这个地址不是以什么.jgp或者.png格式,读取出来存放在本地,这个文件以.jgp为后缀名,然后再把这个图片读取出来,这个时候webview就可以把它隐藏,这样就能做到适配,因为二维码显示的不再是网页版了而是一张图片,现在贴部分代码:
webview相关设置:
webview.addJavascriptInterface(new InJavaScriptLocalObj(), "java_obj"); webview.setFocusable(false); webview.setFocusableInTouchMode(false);//让webview失去焦点防止按下键 网页背景出来 webview.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); } }); myWebViewClient mWebViewClient = new myWebViewClient(); webview.setWebViewClient(mWebViewClient); WebSettings webSettings = webview.getSettings(); webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH); webSettings.setJavaScriptEnabled(true);//支持js必须设置 webSettings.setUseWideViewPort(false); webSettings.setLoadWithOverviewMode(true); webSettings.setSupportZoom(false); webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); //取消滚动条白边效果 webSettings.setBuiltInZoomControls(false); webSettings.setSupportZoom(false)