2014-12-28 1 views
0

현재 앱을 개발 중이며 간단한 인증 프로세스를 만들었습니다. 사용자가 로그인과 패스워드를 주면 서버에 데이터를 보내고 MySql 데이터베이스를 체크합니다. 계정 관리자라는 것을 알고있는 안전한 장소에 사용자 자격 증명을 저장하려고합니다. 어떻게 작동하는지 그리고 어떻게 내 코드에 적용하는지 생각할 수 없습니다. 많은 튜토리얼은 2010 년이나 그 이상입니다.Android 계정 관리자 및 로그인 성공시 다른 작업 시작

이 코드는 제대로 작동하지만 변경 사항을 추가해야합니다. 사용자가 성공적으로 로그인 한 것처럼 MainPanel.class 활동으로 리디렉션하는 활동을 시작하려고합니다. 이런 식으로 코드를 SingnInActivity에 넣으려고했지만 startActivity 메서드를 인식 할 수 없다고합니다. 어떤 아이디어로 작동 시키는가?

public void login(View view){ 
    Intent intent = new Intent(this, loginActivity.class); 
    startActivity(intent); 
} 

아무도 도와 줄 수 있습니까? 난 어떤 도움을 주셔서 감사합니다

내 loginActivity은 다음과 같습니다. 이것은 어떤 방법 startActivityAsyncTask에 없다 SignInActivity

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

private TextView statusField,roleField; 
private Context context; 
String d; 
public SignInActivity(Context context, TextView statusField, TextView roleField) { 
    this.context = context; 
    this.statusField = statusField; 
    this.roleField = roleField; 
} 
protected void onPreExecute(){ 

} 

@Override 
protected String doInBackground(String... arg0) { 

     try{ 
      String username = (String)arg0[0]; 
      String password = (String)arg0[1]; 
      String link="http://myserver/index.php"; 
      String data = URLEncoder.encode("username", "UTF-8") 
        + "=" + URLEncoder.encode(username, "UTF-8"); 
      data += "&" + URLEncoder.encode("password", "UTF-8") 
        + "=" + URLEncoder.encode(password, "UTF-8"); 
      URL url = new URL(link); 
      URLConnection conn = url.openConnection(); 
      conn.setDoOutput(true); 
      OutputStreamWriter wr = new OutputStreamWriter 
        (conn.getOutputStream()); 
      wr.write(data); 
      wr.flush(); 
      BufferedReader reader = new BufferedReader 
        (new InputStreamReader(conn.getInputStream())); 
      StringBuilder sb = new StringBuilder(); 
      String line = null; 
      // Read Server Response 
      while((line = reader.readLine()) != null) 
      { 
       sb.append(line); 
       break; 
      } 

      d=sb.toString(); 
      return d; 

     }catch(Exception e){ 
      return new String("Exception: " + e.getMessage()); 
     } 

} 

protected void onPostExecute(String result){ 

    if(result.equals("adminstrator")){ 
     this.statusField.setText("Yes"); 
//if user is in my database it changes statusfield to 'yes' 
    } 
    else{ 
     this.statusField.setText("No"); 
    } 
    this.roleField.setText(result); 
} 

}

답변

0

public class loginActivity extends Activity { 
private EditText usernameField,passwordField; 
private TextView status,role; 
public String d; 

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

    usernameField = (EditText)findViewById(R.id.usernameField); 
    passwordField = (EditText)findViewById(R.id.passwordField); 
    status = (TextView)findViewById(R.id.status); 
    role = (TextView)findViewById(R.id.textView5); 
} 



public void loginPost(View view){ 
    String username = usernameField.getText().toString(); 
    String password = passwordField.getText().toString(); 
//there I use another activity to 'sign in' 
    new SignInActivity(this,status,role).execute(username,password); 
} 

}

입니다 . 그것은 Activity 클래스에 있습니다. 상속이 무엇인지 이해하지 못하면 link부터 시작하십시오. 활동에

변경 컨텍스트 :

private Activity context; 
public SignInActivity(Activity context, TextView statusField, TextView roleField) { 
    this.context = context; 
    this.statusField = statusField; 
    this.roleField = roleField; 
} 

는 그 다음 AccountManager 사용

Intent intent = new Intent(this, MainPanel.class); 
context.startActivity(intent); 
+0

감사합니다! 그것은 내 문제 중 하나를 해결 :) Intent intent = 새로운 의도 (this.context, MainPanel.class); context.startActivity (intent); 독립 실행 형이 아니라 this.context를 사용했으며 작동 중입니다. AccountManager를 추가하는 방법에 대해 알고 있습니까? – pawisoon

+0

아니요 - 귀하의 질문이 무엇인지 알지 못합니다. – Divers

0

를 사용, 사실 꽤 복잡하다. 기존 워크 플로에 그대로 놓을 수는 없습니다. Android 프레임 워크에서 바인딩 할 수있는 AbstractAccountAuthenticator 구현이 필요합니다. 필요한 경우 로그인 활동을 호출합니다.

는 덧붙여 말하자면,이 this app

에서 상당히 이해할 수있는 예입니다 ... 그리고, 좋은 설명을 어떻게 내 책에있는 모든 작품, 답변에 대한 Enterprise Android

+0

답변 해 주셔서 감사합니다! 나는 너의 책을 점검 할 것이다. 제 대학 도서관에 가지고 있다고 생각합니다. – pawisoon

+0

희망은 당신을 위해 작동합니다. 만약 그렇다면, 나는 upvote/accept에 감사 할 것입니다. –