2010-11-15 3 views
1

Мне нужно войти в систему с моим приложением. После входа в систему, если это правильно, я хочу показать TabView с:Как проверить статус входа?

  • Моя статистика
  • Загрузить фото
  • MapView

Это мой код для входа в систему деятельности

public class LoginActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    String url, user, pwd, user_field, pwd_field; 

    url = "http://myurl.com/login/"; 

    user_field = "username"; 
    pwd_field = "password"; 
    user = "myuser"; 
    pwd = "mypass"; 

    List<NameValuePair> myList = new ArrayList<NameValuePair>(2); 
    myList.add(new BasicNameValuePair(user_field, user)); 
    myList.add(new BasicNameValuePair(pwd_field, pwd)); 

    final HttpParams params = new BasicHttpParams(); 
    final HttpClient client = new DefaultHttpClient(params); 
    final HttpPost post = new HttpPost(url); 
    //final HttpResponse end = null; 
    //String endResult = null; 

    Button login_button = (Button)findViewById(R.id.login_button); 

    try { 
     post.setEntity(new UrlEncodedFormEntity(myList)); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    login_button.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 
      try { 
       HttpResponse response = client.execute(post); 
       //HttpResponse end = response; 
       System.out.println(response.getStatusLine()); 
      } catch (ClientProtocolException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

}

+0

Если мое предложение помогло, пожалуйста, дайте мне знать. Спасибо – prolink007

+0

Как я могу сохранить сеанс и перейти к 3 вкладкам? Мне нужно использовать cookie? Или Android управляет ими автоматически? – Fabian

ответ

0

Создайте скрипт login.php, который вы можете вызвать на сервере, и отправьте свою аутентификацию сценарию, и пусть сценарий выполнит вашу аутентификацию и отправит результат обратно в ваше приложение.

В основном, ваше приложение отправит аутентификацию в скрипт login.php, а затем сценарий вернется в ваше приложение, было ли оно успешным или нет.

0

Я предполагаю, что вы хотите вызвать свое действие входа с помощью «startActivityForResult», когда ваше приложение запускается в первый раз. Вы можете использовать этот скелет и заполнить пробелы:

public class YourLoginActivity extends Activity { 

private ProgressDialog executingDialog; 
private Button loginButton; 
private EditText username, password; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.setContentView(R.layout.login); 

    loginButton = (Button) this.findViewById(R.newTransaction.loginButton); 
    loginButton.setOnClickListener(new LoginButtonListener()); 

    username = (EditText) findViewById(R.login.username); 
    password = (EditText) findViewById(R.login.password); 
} 


private class LoginButtonListener implements OnClickListener { 
    @Override 
    public void onClick(View v) { 

     executingDialog = ProgressDialog.show(this, "", getString(R.string.message_executingLogin), true); 

     new Thread() { 
      public void run() { 

       try { 

        HttpClient httpClient = HttpClient.getInstance(); 
        Response response = httpClient.doLogin(username.getText().toString(), password.getText().toString()); 

        if(response.getCode() == 200){ 
         // TODO: insert more checks, e.g. validating the answer here! 
         handler.post(loginDone); 
        } 
        else { 
         // TODO: handle error codes etc. 
         handler.post(loginFailed); 
        } 

       } catch (Exception e) { 
        Log.e(TAG, "", e); 
        handler.post(loginFailed); 
       } 
      } 
     }.start(); 
    } 
} 

private final Runnable loginDone = new Runnable() { 
    public void run() { 
     executingDialog.dismiss(); 
     setResult(RESULT_OK); 
     finish(); 
    } 
}; 

private final Runnable loginFailed = new Runnable() { 
    public void run() { 
     executingDialog.dismiss(); 
     // TODO: show error dialog 
    } 
}; 

Я хотел бы предложить, чтобы реализовать одноплодной обертку HttpClient. И если вы перехватите запуск с помощью своего входа в систему, обязательно добавьте к нему атрибут «android:noHistory».

Смежные вопросы