안녕하세요 안드로이드 json관련 질문입니다.

조회수 2486회

안녕하세요 매번 답변 주심에 감사드립니다. 다름이 아니라 json에서 password값을 받아와서 하는 테스트 소스를 하고 있는데요 password와 edittext에서 비밀번호가 맞으면 클릭시 다른 액티비티로 넘어가는 소스입니다. 근데 값이 잘 안들어와서 이렇게 남깁니다. json은 알맞게 잘 들어옵니다 json사이트는 테스트라서 제 번호에만 인식하게 되있어서요.. 어딘가 잘못 놓은건지 함수가 잘못된건지 몇일째 이러고 있어서 남깁니다.. 말이 장황해서 죄송하구요 계속 실시간으로 보고 있어서 혹시 답변 주시면 감사하겠습니다. 읽어주셔서 감사합니다.

public class Intro_activity extends AppCompatActivity {

    private EditText et_id, et_pw;
    private Button bt;
    public TelephonyManager telephonyManager;
    private AlertDialog.Builder alert;
    private final static String TAG = "Intro_activity";
    private String userName, userPass, phone, name, team, password;
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.intro_activity);
        et_id = (EditText) findViewById(R.id.intro_et_id);
        et_pw = (EditText) findViewById(R.id.intro_et_pw);
        userName = et_id.getText().toString();
        userPass = et_pw.getText().toString();
        Log.d("user",userPass.toString());
        Log.d("userName",userName.toString());
        et_pw.requestFocus();
        tv = (TextView)findViewById(R.id.testTextView);
        tv.setText(userName);
        InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(this.et_pw, InputMethodManager.SHOW_FORCED);
        imm.showSoftInputFromInputMethod (this.et_pw.getApplicationWindowToken(),InputMethodManager.SHOW_FORCED);
        bt = (Button) findViewById(R.id.intro_bt);
        bt.setOnClickListener(mClickListener);
        getPhoneNumber();
        alert = new AlertDialog.Builder(Intro_activity.this);
        alert.setTitle("알림");
    }

    Button.OnClickListener mClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            switch (v.getId()) {

                case R.id.intro_bt: {
                    String errMsg = "";

                    if (et_id.getText().toString().equals("")) {
                        errMsg = "ID가 입력되지 않았습니다.";

                        Log.d(TAG, "RequestLogin JSONObject errMsg" + errMsg);


                        alert.setMessage(errMsg);
                        alert.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                dialog.dismiss();
                            }
                        }).show();

//                  //커스텀 팝업 sample #########################################3
//                  AlertDialog.Builder builder =  new AlertDialog.Builder(this);
//                    View customLayout = View.inflate(this, R.layout.custom_dialog, null);
//
//                    builder.setTitle("custom dialog");
//                    builder.setView(customLayout);
//
//                    Button btnA01 = (Button)customLayout.findViewById(R.id.ButtonA01);
//                    View.OnClickListener btnA01Listener = new View.OnClickListener() {
//                     @Override
//                     public void onClick(View v) {
//
//                     }
//                    };
//                    btnA01.setOnClickListener(btnA01Listener);
//
//                    builder.show();

                        break;

                    } else if (et_pw.getText().toString().equals("")) {
                        errMsg = "비밀번호가 입력되지 않았습니다.";

                        Log.d(TAG, "RequestLogin JSONObject errMsg2" + errMsg);

                        alert.setMessage(errMsg);
                        alert.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // TODO Auto-generated method stub
                                dialog.dismiss();
                            }
                        }).show();

                        break;
                    }
//                    Intent intent = new Intent(Intro_activity.this, MainActivity.class);
//                    intent.putExtra("phone", phone);
//                    startActivity(intent);
//                    break;
            request();
                }
            }
        }
    };

    private void getPhoneNumber() {

        telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

        Log.d(TAG, "phone = " + phone);

        phone = telephonyManager.getLine1Number();
        if (10 > phone.length() || phone == null) {
            String errMsg = "전화번호 정보를 찾을수 없습니다. \n잠시 후 다시 실행 해주세요.";
            Log.d(TAG, "phone.length" + phone.length());
            alert.setMessage(errMsg);
            alert.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.dismiss();
                    finish();
                }
            }).show();
            if (phone.startsWith("+82")) {
                phone = phone.replace("+82", "0");
            }
            Log.d(TAG, "telManager.getLine1Number() " + telephonyManager.getLine1Number());
            Log.d(TAG, "phone " + phone);


//          Intent errActivity = new Intent(getApplicationContext(), ErrorActivity.class);
//          errActivity.putExtra("errMsg", "전화번호 정보를 찾을수 없습니다. 잠시 후 다시 실행 해주세요.");
//          startActivity(errActivity);
//          overridePendingTransition(R.anim.fade, R.anim.hold);
        }
        et_id.setText(phone);
    }

    public class SingActivity extends AsyncTask<String, Void, String> {

        HttpURLConnection urlConnection;
        StringBuilder result;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... params) {
            result = new StringBuilder();
            urlConnection = null;
            try {
                URL url = new URL("http://dbserver.x-y.net/oh-android/json/json_login1.php?TEL=" + phone);
                urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.connect();
                InputStream in = new BufferedInputStream(urlConnection.getInputStream());
                BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                String line;
                String result = "";
                while ((line = reader.readLine()) != null) {
                    result += line;
                }
                parseResult(result);
                // Close stream
                if (null != in) {
                    in.close();
                }
                return result;

            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                assert urlConnection != null;
                urlConnection.disconnect();
            }
            return result.toString();
        }

        @Override
        protected void onPostExecute(String result) {
            // Download complete. Lets update UI
        }

        private void parseResult(String result) {

            try {
                JSONArray response = new JSONArray(result);
                Log.d("result", result);
                for (int i = 0; i < response.length(); i++) {
                    password = response.getJSONObject(i).getString("Password");
                    phone = response.getJSONObject(i).getString("Phone");
                    team = response.getJSONObject(i).getString("Team");
                    name = response.getJSONObject(i).getString("Name");
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }
    public void request() {
        SingActivity singActivity = new SingActivity();
        singActivity.execute("");
        if (userPass == password) {
                Log.d("Password", userPass);
//            Toast.makeText(getApplicationContext(), userPass+"?",Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), password+"?",Toast.LENGTH_LONG).show();
                Intent intent = new Intent(Intro_activity.this, MainActivity.class);
                intent.putExtra("Phone", phone);
                startActivity(intent);
            } else {
                String errMsg = "";
                errMsg = "비밀번호가 틀립니다.";
            Toast.makeText(getApplicationContext(), userPass+"?",Toast.LENGTH_LONG).show();
                alert.setMessage(errMsg);
                alert.setPositiveButton("확인", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                }).show();
            }
        }
    }

임포트 부분은 길어서 뺏습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • request() 의 Log.d("Password", userPass); 의 값은 찍히나요? 김선우 2016.9.23 11:09
  • 그 부분때문에 고생했었는데 잘 해결하였습니다 ㅠㅠ 알 수 없는 사용자 2016.9.24 23:24
  • 관심가져주시고 소스 봐주시고 귀한시간 내어주셔서 감사합니다 알 수 없는 사용자 2016.9.24 23:21
  • 왠지 널값 때문에 그부분이 안찍힐 것 같았는데... 해결하셨다니 다행입니다~ 잘안풀릴때는 의심가는 부분부터 로그를 찍어가며 찾아간다면 쉽게 찾으실 수 있을거에요. 김선우 2016.9.25 13:01

1 답변

  • 현재 구조에선 userPass가 항상 공백이겠군요.

    userName = et_id.getText().toString(); userPass = et_pw.getText().toString();

    구문을 request() 함수 첫줄 넣으시면 되겠네요.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 감사합니다! Log 처음부터 다시 해봤는데 ㅠㅠ 감사합니다 많은 도움 됐습니다 귀한 시간 내서 봐주셔서 감사해요 알 수 없는 사용자 2016.9.23 12:53

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)