zoukankan      html  css  js  c++  java
  • Android实现二维码扫描登录网页

        之前写过一个二维码扫描demo,用的Zxing的框架,点击下载。兴许扫描二维码中出现一些问题,比方解决压缩图片。调整扫描窗体大小等等

    兴许单位要求做扫描登录实现,发现难点就是怎么知道你扫描的是这台电脑,后台必须获取到(后台技术的问题)然后把这个參数给我,再传递到后台,后台推断登录就可以。这样自己扫描后直接传递个參数就能够实现登录了。效果例如以下:


    大概代码实现:扫描跳转:

    			//扫描登录a
    		case R.id.tv_more_qr:
    			if (PventQuickClick.isFastDoubleClick()) {
    				break;
    			}
    			DialogUtils.showCommonPopupWindow(context);
    			MyApplication.checkLogin(context, new APPCallback() {
    
    				@Override
    				public void appCallback(String userid) {
    					// TODO Auto-generated method stub
    					DialogUtils.dismissCommonPopupWindow();
    					Intent openCameraIntent = new Intent(context,CaptureActivity.class);//Zing框架的类
    					startActivityForResult(openCameraIntent,0);
    					
    				}
    			});
    			
    			break;
    然后扫描后会返回扫描的结果在onActivityResult

    @Override
    	public void onActivityResult(int requestCode, int resultCode, Intent data) {
    		super.onActivityResult(requestCode, resultCode, data);
    		
    		if (resultCode == getActivity().RESULT_OK) {
    			Bundle bundle = data.getExtras();
    			String qrResult = bundle.getString("result");
    			LogUtils.log_e("qrResult", qrResult);
    			int scan= qrResult.indexOf("+");
    			//对切取字符串推断
    			//登录
    			if(scan>0){
    				String starts = qrResult.substring(0, scan);
    				String ends = qrResult.substring(scan+1, qrResult.length());
    				LogUtils.log_e("starts", starts+"......."+ends);
    				if(ends.equals("QrLogin")){
    					Intent intent = new Intent(context,QrLogin.class);//跳转到确认登录界面
    					intent.putExtra("scanResult", starts);
    					startActivity(intent);
    				}
    			}else if(StringUtils.getUrl(qrResult)){//是html的链接直接跳转浏览器,比方apk下载等等
    				Intent intent =new Intent();
    		        intent.setAction("android.intent.action.VIEW");
    		        Uri content_url =Uri.parse(qrResult);
    		        intent.setData(content_url);
    		        startActivity(intent);
    			}else if(!StringUtils.getUrl(qrResult)){
    				Toast.makeText(getActivity(), "客官,您扫的找不到呀!

    ", 0).show(); } } }


    然后跳转到确认登录界面:点击推断传參:

    	@Override
    	protected void baseOnClick(View v) {
    		switch (v.getId()) {
    		case R.id.tv_qr_login:
    //			Toast.makeText(QrLogin.this, "登录", 0).show();
    			DialogUtils.showCommonPopupWindow(QrLogin.this);
    			LinkedHashMap<String, String> get_checkqrcodelogin = new LinkedHashMap<String, String>();
    			get_checkqrcodelogin.put("key", MyApplication.getUserState("loginkey"));// android 固定为1
    			get_checkqrcodelogin.put("sessionid", sessionid);// android 固定为1
    			HttpManager.GetCheckQrCodeLogin(get_checkqrcodelogin, new NetCallBack() {
    
    				@Override
    				public void callback(String result) {
    					DialogUtils.dismissCommonPopupWindow();
    					LogUtils.log_e("GetCheckQrCodeLogin", result);
    					final CheckQrCodeLogin checkqrcode = JsonUtils.getBeanFromJson(
    							result, CheckQrCodeLogin.class);
    					if(checkqrcode.code.equals("1")){
    						Toast.makeText(QrLogin.this, "登录成功", 0).show();
    						finish();
    					}
    					
    					
    				}
    			});
    			break;

    这样就能够实现二维码扫描登录。二维码demo下载解决扫描框大小和图片压缩问题


  • 相关阅读:
    主引导扇区的理解
    敏捷的思考
    架构学习笔记
    操作系统笔记
    Docker学习笔记
    技术面试-国外人谈经验
    硬盘的原理学习
    linux压缩和解压命令总结
    好的技术团队和差的技术团队的区别在于技术架构前瞻性和适应变化的能力
    管理者的本质其实就是一个服务者,服务下属的
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8711130.html
Copyright © 2011-2022 走看看