패키지 com.moretickets.platform을; 수입 com.alibaba.fastjson.JSONException; 수입 com.alibaba.fastjson.JSONObject; 수입 sun.rmi.runtime.Log; 수입 java.util.regex.Matcher; 수입 있으며, java.util.regex.Pattern; 공공 클래스 SendSMSCode { 개인 INT의 countSeconds = 60; // 카운트 다운 초 개인 는 EditText mobile_login, yanzhengma, 개인 단추 getyanzhengma1,하여 login_btn; 개인 상황에 맞는 mContext; 개인 문자열 usersuccess; 개인 처리기 mCountHandler = 새로운 핸들러 () { @보수 공공 무효 handleMessage (메시지 MSG) { 슈퍼 .handleMessage (MSG); 경우 (countSeconds> 0 ) { - ; countSeconds getyanzhengma1.setText는 ( ( "+ countSeconds +" "다음 코드 받기)" ); mCountHandler.sendEmptyMessageDelayed ( 0, 1000 ); } 다른 { countSeconds = 60 ; getyanzhengma1.setText ( "제발 다시 얻을 확인 코드를" ); } } }; 개인 문자열 userinfomsg; @보수 보호 공간 에서 onCreate (번들 savedInstanceState) { 슈퍼 .onCreate (savedInstanceState); mContext는 = 이 ; 된 setContentView (R.layout.activity_login); initView (); initEvent (); initData (); } 개인 무효 initView () { mobile_login = (글고) findViewById를 (R.id.mobile_login); getyanzhengma1 = (버튼) findViewById를 (R.id.getyanzhengma1); yanzhengma = 합니다 (글고)를 findViewById를 (R.id.yanzhengma); 하여 login_btn = (버튼) findViewById를 (R.id.login_btn); } 개인 무효 initEvent () { getyanzhengma1.setOnClickListener ( 이 ); login_btn.setOnClickListener ( 이 ); } 개인 무효 initData () { } @보수 공공 무효 의 onclick (보기 V) { 스위치 (v.getId ()) { 경우 R.id.getyanzhengma1 : 경우 (countSeconds == 60 ) { 문자열 모바일 = mobile_login.getText의 toString () ().; Log.e ( "태그"+ "모바일 ==" 이동); getMobiile (모바일); } 다른 { Toast.makeText (LoginActivity. 다음은이 "반복하지 전송 코드" , Toast.LENGTH_SHORT)를 .Show (); } 휴식 ; 경우 R.id.login_btn : 로그인(); 휴식 ; 기본값 : 휴식 ; } } // 정보를 기록 할 수 공공 무효 () {로그인 문자열 모바일 = mobile_login.getText의 toString () () (트림)..; 문자열 verifyCode = yanzhengma.getText의 toString () () (트림)..; PARAMS RequestParams = 새로운 새로운 RequestParams ( "인터페이스는 로그인 여기에 귀하의 요청을 대체하는"); x.http (). 포스트 (PARAMS, 새로운 Callback.ProgressCallback <문자열> () { @보수 공공 무효 onWaiting () { } @보수 공공 무효 onStarted () { } @보수 공공 무효 onLoading ( 긴 총, 긴 현재, 부울 isDownloading) { } @보수 공공 무효 는 onSuccess (문자열 결과) { 시도 { 된 JSONObject 된 JSONObject는 = 새로운 된 JSONObject (결과); Log.e ( "태그", "= 결과 상륙"+ 된 JSONObject를); 문자열 성공은 jsonObject.optString ( "성공"= ); 문자열 데이터 = jsonObject.optString ( "데이터" ); 문자열 MSG = jsonObject.optString ( "MSG" ); 경우 ( "true"로 .equals (성공)) { Log.e ( "태그", "착륙 = 데이터"+ 데이터); 된 JSONObject의 JSON은 = 새 된 JSONObject (데이터); 토큰 = json.optString ( "토큰" ); userId를 = json.optString ( "userId를" ); // 내가 요구 한대로 내가 여기에 쓰기 및 변경할 수있는 적절한 // 상태의 사용자 정보를 얻을 수 getUserInfo (); } 다른 { Toast.makeText (LoginActivity. 이 , MSG, Toast.LENGTH_SHORT) .show (); } } 캐치 (JSONException 전자) { e.printStackTrace (); } } @보수 공공 무효 의 OnError (Throwable를 전, 부울 isOnCallback) { } @보수 공공 무효가 onCancelled (CancelledException의 CEX) { } @보수 공공 무효 onFinished () { } }); } // 휴대 전화 번호가 있는지 확인하는 코드 정보 확인을 얻을 개인 무효 getMobiile (문자열 모바일) { IF ( "" {.equals (모바일)) Log.e ( "태그", "모바일 ="+ 모바일), 새로운 새 에 AlertDialog.Builder (mContext) .setTitle ( "팁") .setMessage이 (.setCancelable ( "전화 번호가 비어있을 수 없습니다") true로를 .Show) () ; } 다른 IF (isMobileNO (모바일) == 거짓 ) { 새로운 새 에 AlertDialog.Builder (mContext) .setTitle ( "팁") (.setMessage ( "올바른 전화 번호를 입력하세요") .setCancelable true로 ) .Show (); } 다른 { Log.e는 ( "태그", "정확한 전화 번호를 입력" ); requestVerifyCode (모바일); } } // 코드 정보, 확인 코드 얻을 개인 무효 {requestVerifyCode (문자열 모바일) RequestParams RequestParams = 새로운 새로운 RequestParams은 ( "다음은 매개 변수의 증가의 의미를, 그래서 다시 당신에게, 확인 코드를 요청하는 인터페이스입니다"); x.http (). 포스트 (requestParams, 새로운 Callback.ProgressCallback <문자열> () { @보수 공공 무효 onWaiting () { } @보수 공공 무효 onStarted () { } @보수 공공 무효 onLoading ( 긴 총, 긴 현재, 부울 isDownloading) { } @보수 공공 무효 는 onSuccess (문자열 결과) { 시도 { 된 JSONObject jsonObject2는 = 새로운 된 JSONObject (결과); Log.e ( "태그", "jsonObject2"+ jsonObject2); 문자열 상태 jsonObject2.getString ( "성공"= ); 문자열 verifyCode = jsonObject2.getString ( "MSG" ); Log.e ( "태그"+ "== 코드를 얻을" verifyCode을), IF ( "true로" .equals (상태)) { Toast.makeText (. LoginActivity 이 , verifyCode, Toast.LENGTH_SHORT) .show (); startCountBack은 (); // 이 매개 변수에 대한 요청입니다 } 다른 { Toast.makeText (. LoginActivity 이 , verifyCode, Toast.LENGTH_SHORT) .show (); } } 캐치 (JSONException 전자) { e.printStackTrace (); } } @보수 공공 무효 의 OnError (Throwable를 전, 부울 isOnCallback) { ex.printStackTrace (); } @보수 공공 무효가 onCancelled (CancelledException의 CEX) { } @보수 공공 무효 onFinished () { } }); } // 정규 표현식은 전화 번호를 결정 공공 정적 부울 isMobileNO (전화 문자열) { 패턴 (P)는 15 ([0-3] | | [5-9]) | (14) [5,7,9] | 17 1,3,5,6 ( "^ (13 [0-9]는 Pattern.compile를 = , 7,8] | 18 [0-9]) \\ D {8} $ " ); 정합 m = p.matcher (TEL); 에서 System.out.println (m.matches () + "---" ); 복귀 ) (m.matches 단계; } // 작업을 계산, 코드 정보를 개인 무효 () {startCountBack를 ((활동) mContext) .runOnUiThread ( 새 의 Runnable () { @보수 공공 무효 실행 () { getyanzhengma1.setText (countSeconds + "" ); mCountHandler.sendEmptyMessage ( 0 ); } }); } }