欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

android實(shí)現(xiàn)掃描網(wǎng)頁(yè)二維碼進(jìn)行網(wǎng)頁(yè)登錄功能

 更新時(shí)間:2017年12月05日 08:35:23   作者:丁先森  
這篇文章主要介紹了android掃描網(wǎng)頁(yè)二維碼進(jìn)行網(wǎng)頁(yè)登錄效果,掃描成功之后跳轉(zhuǎn)進(jìn)入主頁(yè),具體實(shí)現(xiàn)代碼大家參考下本文

先說(shuō)一下實(shí)現(xiàn)了什么效果,app掃描php寫(xiě)的頁(yè)面(也可以java網(wǎng)頁(yè),都一樣的思路和步驟),掃描成功后跳轉(zhuǎn)進(jìn)入主頁(yè),光和你們這么說(shuō),肯定有人說(shuō)了,沒(méi)圖說(shuō)個(gè)jb,這就出來(lái)一個(gè)問(wèn)題,很多人寫(xiě)博客,看這標(biāo)題特別符合自己的問(wèn)題,然后興致勃勃的進(jìn)來(lái)了,一看,我去...尼瑪全是代碼,也不知道是不是我的那種問(wèn)題和想要的那種效果,心里沒(méi)譜啊,好了,上圖:


別糾結(jié)這頁(yè)面咋這么丑,沒(méi)寫(xiě)樣式,說(shuō)一下我實(shí)現(xiàn)的思路哈,首先在數(shù)據(jù)庫(kù)中新建一個(gè)表用來(lái)存儲(chǔ)掃碼登錄信息(id,username,randomnum),這三個(gè)分別是id自增長(zhǎng),用戶(hù)名,隨機(jī)數(shù)——>點(diǎn)擊生成二維碼,生成隨機(jī)數(shù),可以用

說(shuō)的簡(jiǎn)單的就是,生成二維碼的時(shí)候只存入隨機(jī)數(shù)(或者你自定義的隨便信息),使用app掃碼之后根據(jù)隨機(jī)數(shù)把用戶(hù)名存進(jìn)去,網(wǎng)頁(yè)每隔5s請(qǐng)求另外一個(gè)接口時(shí),如果username不為空好了跳轉(zhuǎn)操作。大體就是這樣的,有可能大神的實(shí)現(xiàn)也不是這樣的,我就是把我理解的說(shuō)出來(lái),如果你們有另外的實(shí)現(xiàn)方法也可以在下邊評(píng)論告訴我,共同學(xué)習(xí),下面貼代碼了。

部分php(新手可能不太規(guī)范,勿噴)login.php代碼:

else if ($_REQUEST['act'] != '' && $_REQUEST['act'] == 'codeCreate') {
  //if userName為空--->表示網(wǎng)頁(yè)第一次點(diǎn)擊新建生成
  //網(wǎng)頁(yè)生成二維碼操作,同時(shí)添加數(shù)據(jù)到表中
  if ($_REQUEST['userName'] != '') {//不為空的時(shí)候表示修改
    $userName = $_REQUEST['userName'];
    $randomNum = $_REQUEST['randomNum'];
    echo "掃碼成功";
    $sql = "update UserCodeLogin set username='$userName' WHERE randomnum='$randomNum'";
//    mysqli_query($conn, $sql);//插入成功
  } else {//為空的時(shí)候表示是新建二維碼
    //生成隨機(jī)數(shù)
    $randomNum = "";
    for ($i = 0; $i < 5; $i++) {
      $randomNum .= rand(0, 9);
    }
    echo $randomNum;//顯示生成的隨機(jī)數(shù)
    $sql = "insert into UserCodeLogin(username,randomnum) VALUES ('','$randomNum')";
//    mysqli_query($conn, $sql);//插入成功
  }
  mysqli_query($conn, $sql);//插入成功

} else if ($_REQUEST['act'] != '' && $_REQUEST['act'] == 'codeSelect') {//根據(jù)隨機(jī)數(shù)查詢(xún)表中的username是否為空
  $randomNum = $_REQUEST['randomNum'];
  if ($randomNum == '' && empty($randomNum)) {
  } else if ($randomNum != '') {
    $sql = "select username from UserCodeLogin where randomnum='$randomNum'";
    $result = mysqli_query($conn, $sql);
//    print_r($result);
    if (mysqli_num_rows($result) > 0) {
      while ($row = mysqli_fetch_assoc($result)) {
        $userName = $row['username'];
      }
      if ($userName == '' && $userName == null) {
        //說(shuō)明客戶(hù)端還未掃碼修改過(guò)
      } else if ($userName != '') {
        //客戶(hù)端掃碼完成
        //跳轉(zhuǎn)頁(yè)面
        echo "客戶(hù)端掃碼成功,跳轉(zhuǎn)中...";
      }
    }
  }

然后是login.html

<html>
<head>
  <title>這是首頁(yè)</title>
</head>
<script type="text/javascript" src="js/jquery-1.12.3.js"></script>
<body>
<script type="text/javascript">
  var type = 1;
  var randomNum;

  function clickBtn() {
    $.post("../login.php?act=codeCreate&userName=",
      function (data) {
        alert("-------random:" + data);
        randomNum = data;
        $("#img").attr('src', "http://qr.topscan.com/api.php?text=" + data);
      });
    type = 2;
  }
  function time() {
    $.post("../login.php?act=codeSelect&randomNum=" + randomNum,
      function (data) {
        if (data) {
          alert(data);
          $(location).attr('href', 'index.html');
        } else {
        }
      })
  }
  setInterval("time()", 4000);
</script>
<button type="submit" id="btn" onclick="clickBtn()"> 點(diǎn)擊生成二維碼</button>
<!--src="https://www.baidu.com/img/baidu_jgylogo3.gif"-->
<img id="img" style="visibility: visible" width="250px"/>
</body>
</html> 

上邊就是服務(wù)端的部分代碼,放心有源碼,下邊寫(xiě)完一起給

下面開(kāi)始android了關(guān)于android的掃碼第三方開(kāi)源的有挺多的,這里使用的是Zing,他可以實(shí)現(xiàn)的挺多的二維碼,條形碼,生成二維碼。。。

建類(lèi)庫(kù),導(dǎo)jar包,掉用,你們可以直接拿過(guò)這個(gè)類(lèi)庫(kù)去,然后自己改需要的樣式。

這個(gè)圖是目錄結(jié)構(gòu)

主要的就是mainActivity.java里邊的調(diào)用了

掃碼成功之后的回掉:

@Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // 掃描二維碼/條碼回傳
    if (requestCode == REQUEST_CODE_SCAN && resultCode == RESULT_OK) {
      if (data != null) {
        String content = data.getStringExtra(Constant.CODED_CONTENT);
        result.setText("掃描結(jié)果為:" + content);
        /*執(zhí)行網(wǎng)絡(luò)請(qǐng)求*/
        String username = "dingchao";
        volleyScanCodeLogin(content, username);
        Log.e("aaa","volleyScanCodeLogin。。。3");
      }
    }
  }

volleyScanCodeLogin()方法:

/**
   * 網(wǎng)絡(luò)請(qǐng)求
   * 使用Volley進(jìn)行網(wǎng)絡(luò)請(qǐng)求
   *
   * @param content 攜帶的隨機(jī)數(shù)和用戶(hù)名
   * @param username 用戶(hù)名
   */
  private void volleyScanCodeLogin(final String content, final String username) {
    Log.e("aaa","volleyScanCodeLogin。。。1");
    final RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);
    StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://你自己的目錄地址/webcodelogin/login.php", new Response.Listener<String>() {
      @Override
      public void onResponse(String s) {
        Log.e("aaa","volleyScanCodeLogin。。。2");
        Toast.makeText(MainActivity.this, "" + s, Toast.LENGTH_SHORT).show();
      }
    }, new Response.ErrorListener() {
      @Override
      public void onErrorResponse(VolleyError volleyError) {

      }
    }) {
      @Override
      protected Map<String, String> getParams() throws AuthFailureError {
        Map<String, String> map = new HashMap<String, String>();
        map.put("act", "codeCreate");
        map.put("userName", username);
        map.put("randomNum", content);
        return map;
      }
    };
    mQueue.add(stringRequest);/*請(qǐng)求數(shù)據(jù)*/
  }

上邊那些就是主要的工程代碼,然后源碼我打包放到百度云盤(pán)中,鏈接:https://pan.baidu.com/s/1slsQM2D 密碼:gdyp

相關(guān)文章

  • Android?Settings?跳轉(zhuǎn)流程方法詳解

    Android?Settings?跳轉(zhuǎn)流程方法詳解

    這篇文章主要為大家介紹了Android?Settings跳轉(zhuǎn)流程方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Android四大組件之Activity深入解讀生命周期

    Android四大組件之Activity深入解讀生命周期

    雖然說(shuō)我們天天都在使用Activity,但是你真的對(duì)Activity的生命機(jī)制完全了解了嗎?Activity的生命周期方法只有七個(gè),但是其實(shí)那只是默認(rèn)的情況。也就是說(shuō)在其他情況下,Activity的生命周期可能不會(huì)是按照我們以前所知道的流程,這就要說(shuō)到Activity的啟動(dòng)模式
    2022-07-07
  • Android  調(diào)用系統(tǒng)應(yīng)用的方法總結(jié)

    Android 調(diào)用系統(tǒng)應(yīng)用的方法總結(jié)

    這篇文章主要介紹了Android 調(diào)用系統(tǒng)應(yīng)用的方法總結(jié)的相關(guān)資料,這里提供調(diào)用錄像,錄音,拍照等功能,需要的朋友可以參考下
    2017-08-08
  • RecyclerView焦點(diǎn)跳轉(zhuǎn)BUG優(yōu)化的方法

    RecyclerView焦點(diǎn)跳轉(zhuǎn)BUG優(yōu)化的方法

    這篇文章主要介紹了RecyclerView焦點(diǎn)跳轉(zhuǎn)BUG優(yōu)化的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • android實(shí)現(xiàn)可自由移動(dòng)、監(jiān)聽(tīng)點(diǎn)擊事件的懸浮窗

    android實(shí)現(xiàn)可自由移動(dòng)、監(jiān)聽(tīng)點(diǎn)擊事件的懸浮窗

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)可自由移動(dòng)、監(jiān)聽(tīng)點(diǎn)擊事件的懸浮窗,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Android中的windowSoftInputMode屬性詳解

    Android中的windowSoftInputMode屬性詳解

    這篇文章主要介紹了Android中的windowSoftInputMode屬性詳解,本文對(duì)windowSoftInputMode的9個(gè)屬性做了詳細(xì)總結(jié),需要的朋友可以參考下
    2014-10-10
  • Android 實(shí)現(xiàn)左滑出現(xiàn)刪除選項(xiàng)

    Android 實(shí)現(xiàn)左滑出現(xiàn)刪除選項(xiàng)

    滑動(dòng)刪除的部分主要包含兩個(gè)部分, 一個(gè)是內(nèi)容區(qū)域(用于放置正常顯示的view),另一個(gè)是操作區(qū)域(用于放置刪除按鈕)。下面通過(guò)本文給大家介紹Android 實(shí)現(xiàn)左滑出現(xiàn)刪除選項(xiàng),需要的朋友可以參考下
    2017-06-06
  • Android 跨進(jìn)程模擬按鍵(KeyEvent )實(shí)例詳解

    Android 跨進(jìn)程模擬按鍵(KeyEvent )實(shí)例詳解

    這篇文章主要介紹了Android 跨進(jìn)程模擬按鍵(KeyEvent )實(shí)例詳解的相關(guān)資料,類(lèi)似手機(jī)遙控器的需求就可以這么做,需要的朋友可以參考下
    2016-11-11
  • Android 實(shí)現(xiàn)通知消息水平播放、無(wú)限循環(huán)效果

    Android 實(shí)現(xiàn)通知消息水平播放、無(wú)限循環(huán)效果

    Android 實(shí)現(xiàn)通知消息水平播放、無(wú)限循環(huán)效果非常常見(jiàn),今天小編給大家分享實(shí)例代碼感興趣的朋友參考下吧
    2017-08-08
  • Android微信端的下拉刷新功能

    Android微信端的下拉刷新功能

    在微信公眾號(hào)內(nèi),在面對(duì)下拉刷新這個(gè)問(wèn)題上,Android和iOS都自己的表現(xiàn)方式。下面通過(guò)本文給大家分享Android微信端的下拉刷新功能,需要的朋友參考下吧
    2017-06-06

最新評(píng)論