2017-10-14 3 views
-2

안녕하세요. 사용자 인증을 위해 서버의 사용자 이름과 암호를 확인하는 로그인 활동이 있습니다. 나는 사용자가 매번 로그인하지 않을 수 있도록 username과 password를 저장하기 위해 sharedpermissions를 사용하고 싶다. 나는 또한 로그인 버튼을 만들고 싶다. 나는 그것을 구현하려했지만 로그인 활동을 건너 뛴다. 나의 두 번째 활동으로 나를 데려 간다. 나는 sharedpermission 코드 중 일부를 의견 (//)으로 남겼습니다.SHARED PREFERENCE (java, sql database LOGIN) 구현 방법

누구나 내가 할 수있는 최선의 것을 말해 줄 수 있습니까?

public class LoginActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 


    //String username = ""; 
    //String password = ""; 
    //SharedPreferences pre; 


    final EditText etUsername = (EditText) findViewById(R.id.etUsername); 
    final EditText etPassword = (EditText) findViewById(R.id.etPassword); 
    final TextView tvRegisterLink = (TextView) findViewById(R.id.tvRegisterhere); 
    final Button bLogin = (Button) findViewById(R.id.bLogin); 

    if(TextUtils.isEmpty(etUsername.getText().toString())||TextUtils.isEmpty(etPassword.getText().toString())){ 
     Intent intent = new Intent(LoginActivity.this, UserAreaActivity.class); 
     LoginActivity.this.startActivity(intent); 
    } else { 
     Intent registerIntent = new Intent(LoginActivity.this, LoginActivity.class); 
     LoginActivity.this.startActivity(registerIntent); 
    } 




    final String username1 = SharedPreferenceUtils.getUsername(this); 
    final String password1 = SharedPreferenceUtils.getPassword(this); 

    // pre = getSharedPreferences("pref",MODE_PRIVATE); 
    //if(pre.getBoolean("username",true) && pre.getBoolean("password",true)){ 













    tvRegisterLink.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent registerIntent = new Intent(LoginActivity.this, RegisterActivity.class); 
      LoginActivity.this.startActivity(registerIntent); 
     } 
    }); 

    bLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final String username = etUsername.getText().toString(); 
      final String password = etPassword.getText().toString(); 


      // Response received from the server 
      Response.Listener<String> responseListener = new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 

         if (success) { 
          String name = jsonResponse.getString("name"); 
          SharedPreferenceUtils.createSP(LoginActivity.this,username1,password1); 





          Intent intent = new Intent(LoginActivity.this, UserAreaActivity.class); 
          intent.putExtra("name", name); 
          intent.putExtra("username", username); 

          LoginActivity.this.startActivity(intent); 


         } else { 
          AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); 
          builder.setMessage("Login Failed") 
            .setNegativeButton("Retry", null) 
            .create() 
            .show(); 
         } 

        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 
       } 
      }; 

      LoginRequest loginRequest = new LoginRequest(username, password, responseListener); 
      RequestQueue queue = Volley.newRequestQueue(LoginActivity.this); 
      queue.add(loginRequest); 






     } 
    }); 


} 

}

public class UserAreaActivity extends AppCompatActivity { 

@Override 
protected void onCreate (Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_user_area); 


    final TextView etusername = (TextView) findViewById(R.id.textView2); 
    final TextView etwelcome = (TextView) findViewById(R.id.textView); 
    final ImageButton red = (ImageButton) findViewById(R.id.imageButton); 
    final ImageButton messages = (ImageButton) findViewById(R.id.imageButton2); 
    final ImageButton blue = (ImageButton) findViewById(R.id.imageButton3); 
    final ImageButton ping = (ImageButton) findViewById(R.id.imageButton4); 
    final TextView etuname = (TextView) findViewById(R.id.textView3); 
    final Button Logout = (Button) findViewById(R.id.logout); 

    //String Name = SharedPreferenceUtils.getName(this); 
    //etwelcome.setText(Name); 




    red.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent registerIntent = new Intent(UserAreaActivity.this, Report.class); 
      UserAreaActivity.this.startActivity(registerIntent); 

     } 
    }); 

    messages.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent registerIntent = new Intent(UserAreaActivity.this, Messages.class); 
      UserAreaActivity.this.startActivity(registerIntent); 


     } 
    }); 

    Logout.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      boolean isClear = SharedPreferenceUtils.clearSP(UserAreaActivity.this); 
      if(isClear){ 
       Intent registerIntent = new Intent(UserAreaActivity.this, LoginActivity.class); 
       UserAreaActivity.this.startActivity(registerIntent); 
      } 




     } 
    }); 

    Intent intent = getIntent(); 
    String name = intent.getStringExtra("name"); 
    String username = intent.getStringExtra("username"); 



    String message = "Welcome " + name; 
    etwelcome.setText(message); 
    etusername.setText(username); 








    //Intent in = new Intent(getApplicationContext(), Messages.class); 
    //in.putExtra("username", username); 
    //UserAreaActivity.this.startActivity(in); 

} 











} 

답변

0

당신은 당신의 코드에서 SharedPreferences를 사용할 수 있습니다.

시도해보십시오.

public class SharedPreferenceUtils { 

    private static final String SP_NAME = "sp"; 
    public static final String USERNAME = "username"; 
    public static final String PASSWORD = "password"; 


    // create 
    public static boolean createSP(Context context, String username, String password) { 
     SharedPreferences.Editor editor = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE).edit(); 
     editor.putString(USERNAME, username); 
     editor.putString(PASSWORD, password); 
     return editor.commit(); 
    } 

    // clear 
    public static boolean clearSP(Context context) { 
     SharedPreferences sharedPreferences = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     return editor.clear().commit(); 
    } 

    // get access info 
    public static String getUsername(Context context) { 
     SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); 
     return sp.getString(USERNAME, ""); 
    } 
    // get branch info 
    public static String getPassword(Context context) { 
     SharedPreferences sp = context.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE); 
     return sp.getString(PASSWORD, ""); 
    } 
} 

사용 LoginActivity

SharedPreferenceUtils.createSP(this,username,password); 

을 및 기타 Activity

String username = SharedPreferenceUtils.getUsername(this); 
String password = SharedPreferenceUtils.getPassword(this); 

편집을 사용하여
if (success) { 
     String name = jsonResponse.getString("name"); 
     SharedPreferenceUtils.createSP(this, username, password); 
} 

편집

private EditText etUsername, etPassword; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    etUsername = (EditText) findViewById(R.id.etUsername); 
    etPassword = (EditText) findViewById(R.id.etPassword); 

    String username = SharedPreferenceUtils.getUsername(this); 
    String password = SharedPreferenceUtils.getPassword(this); 
    etUsername.setText(username); 
    etPassword.setText(password); 
} 

편집

if(TextUtils.isEmpty(etUsername.getText().toString())||TextUtils.isEmpty(etPassword.getText().toString())){ 
     Intent intent = new Intent(LoginActivity.this, A.class); 
     LoginActivity.this.startActivity(intent); 
} else { 
     Intent registerIntent = new Intent(LoginActivity.this, B.class); 
     LoginActivity.this.startActivity(intent); 
} 

편집

boolean isClear = SharedPreferenceUtils.clearSP(UserAreaActivity.this); 
if(isClear){ 
     Intent registerIntent = new Intent(UserAreaActivity.this, LoginActivity.class); 
     UserAreaActivity.this.startActivity(registerIntent); 
}