Android實現二維碼掃描登入網頁
阿新 • • 發佈:2019-01-03
之前寫過一個二維碼掃描demo,用的Zxing的框架,點選下載,後續掃描二維碼中出現一些問題,比如解決壓縮圖片,調整掃描視窗大小等等。後續單位要求做掃描登入實現,發現難點就是怎麼知道你掃描的是這臺電腦,後臺必須獲取到(後臺技術的問題)然後把這個引數給我,再傳遞到後臺,後臺判斷登入即可。這樣自己掃描後直接傳遞個引數就可以實現登入了。效果如下:
大概程式碼實現:掃描跳轉:
然後掃描後會返回掃描的結果在onActivityResult//掃描登入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;
@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下載,解決掃描框大小和圖片壓縮問題