標籤:else code src substr get net map equals pos
? ? 之前寫過一個二維碼掃描demo,用的Zxing的架構,點擊下載。興許掃描二維碼中出現一些問題,比方解決壓縮圖片。調整掃描表單大小等等。
興許單位要求做掃描登入實現,發現痛點就是怎麼知道你掃描的是這台電腦,後台必須擷取到(後台技術的問題)然後把這個參數給我,再傳遞到後台,後台推斷登入就可以。這樣自己掃描後直接傳遞個參數就能夠實現登入了。效果例如以下:
大概代碼實現:掃描跳轉:
//掃描登入acase R.id.tv_more_qr:if (PventQuickClick.isFastDoubleClick()) {break;}DialogUtils.showCommonPopupWindow(context);MyApplication.checkLogin(context, new APPCallback() {@Overridepublic void appCallback(String userid) {// TODO Auto-generated method stubDialogUtils.dismissCommonPopupWindow();Intent openCameraIntent = new Intent(context,CaptureActivity.class);//Zing架構的類startActivityForResult(openCameraIntent,0);}});break;
然後掃描後會返回掃描的結果在onActivityResult
@Overridepublic 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();}}}
然後跳轉到確認登入介面:點擊推斷傳參:
@Overrideprotected 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 固定為1get_checkqrcodelogin.put("sessionid", sessionid);// android 固定為1HttpManager.GetCheckQrCodeLogin(get_checkqrcodelogin, new NetCallBack() {@Overridepublic 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下載。解決掃描框大小和圖片壓縮問題
Android實現二維碼掃描登入網頁