2010-11-17 9 views
5

Quelqu'un peut-il m'aider à proposer un bon tutoriel où je peux commencer. Je veux créer une application simple avec un tableau de bord et un écran de connexion. Pour la première fois, un écran de connexion est demandé à l'utilisateur. La vérification de connexion est effectuée via un appel POST à ​​un script PHP distant. Une fois l'utilisateur connecté, il/elle devrait être redirigé vers le tableau de bord. Une fois que l'utilisateur ferme et rouvre l'application, il doit être redirigé vers l'écran de connexion. Je sais comment créer des formulaires et comment publier, une aide est nécessaire dans le domaine du changement de disposition en fonction des rôles des utilisateurs et comment importer/étendre des classes, par exemple je préfère avoir une classe de connexion (activité) séparée . mais cette classe de connexion doivent être importés à Main (principale devrait étendre l'activité)Connexion de l'application Android

Répondre

2

Pas sûr que je comprends votre question tout à fait, mais quand il s'agit de début et de fin des activités de ce tutoriel est très bon:

http://developerlife.com/tutorials/?p=302

Si vous voulez l'utilisateur à être, comme vous l'appelez, redirigé vers l'écran de connexion lors du retour à l'application après l'avoir eu en arrière-plan sur la solution est d'attraper l'événement onStop() dans votre activité principale. Cet événement est déclenché lorsque l'utilisateur quitte l'application.

Si vous expliquez la ligne "mais cette classe de connexion doit être importée dans Main", je pourrais également répondre à cette question.

+0

seule chose que je veux dire, c'est que la classe de connexion doit être écrite comme un fichier séparé –

+8

L'idée générale de l'API Android est de séparer toutes les vues en différentes activités. Donc, pour votre application, vous voulez probablement l'écran de connexion en tant que classe (extension de la classe d'activité) et votre écran principal en tant qu'autre classe (étendant également la classe d'activité). Lorsque la connexion est réussie, vous lancez votre activité principale à partir de votre activité de connexion en utilisant startActivity() ou startActivityForResult() comme expliqué dans le didacticiel developerlife. –

2

J'ai créé un SDK pour UserApp qui prend en charge la plupart de l'authentification de l'utilisateur, tels que login, une inscription, des sessions, profils utilisateur, connexion sociale, etc.

https://github.com/userapp-io/userapp-android

Comme il est open-source, vous pouvez le modifier AFTE vos propres besoins et de vous connecter à vos propres services.

Le formulaire de connexion serait placé dans un fragment qui étend la AuthFragment, comme ceci:

public class LoginFragment extends AuthFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_signup, container, false); 

     // Setup the login form with bindings to UserApp 
     super.setupLoginForm(view, R.id.login, R.id.password, R.id.login_button); 

     return view; 
    } 

    @Override 
    public Boolean onLoginStart(String login, String password, Boolean isSocialLogin) { 
     // Show loader when waiting for server 
     getView().findViewById(R.id.login_form).setVisibility(View.GONE); 
     getView().findViewById(R.id.login_status).setVisibility(View.VISIBLE); 

     // Return true to complete the login 
     return true; 
    } 

    @Override 
    public void onLoginCompleted(Boolean authenticated, Exception exception) { 
     // Hide the loader 
     getView().findViewById(R.id.login_form).setVisibility(View.VISIBLE); 
     getView().findViewById(R.id.login_status).setVisibility(View.GONE); 

     if (exception != null) { 
      // Show an error message 
      ((TextView) getView().findViewById(R.id.error_text)).setText(exception.getMessage()); 
     } else { 
      // Clear the message 
      ((TextView) getView().findViewById(R.id.error_text)).setText(""); 
     } 
    } 
} 

Et ressemblerait à quelque chose comme la mise en page pour le LoginFragment ceci:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <!-- Progress --> 
    <LinearLayout 
     android:id="@+id/login_status" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:gravity="center_horizontal" 
     android:orientation="vertical" 
     android:visibility="gone" > 

     <ProgressBar 
      style="?android:attr/progressBarStyleLarge" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="8dp" /> 

     <TextView 
      android:id="@+id/login_status_message" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="16dp" 
      android:fontFamily="sans-serif-light" 
      android:text="@string/login_progress_signing_in" 
      android:textAppearance="?android:attr/textAppearanceMedium" /> 
    </LinearLayout> 

    <!-- Login form --> 
    <ScrollView 
     android:id="@+id/login_form" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" > 

      <EditText 
       android:id="@+id/login" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="text" 
       android:hint="@string/username" 
       android:maxLines="1" 
       android:singleLine="true" /> 

      <EditText 
       android:id="@+id/password" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textPassword" 
       android:hint="@string/password" 
       android:maxLines="1" 
       android:singleLine="true" /> 

      <Button 
       android:id="@+id/login_button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:paddingLeft="32dp" 
       android:paddingRight="32dp" 
       android:text="@string/login" /> 

      <Button 
       android:id="@+id/facebook_button" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:paddingLeft="32dp" 
       android:paddingRight="32dp" 
       android:text="@string/facebook_login" /> 

      <Button 
       android:id="@+id/show_signup" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="16dp" 
       android:paddingLeft="32dp" 
       android:paddingRight="32dp" 
       android:text="@string/signup" /> 

      <TextView 
       android:id="@+id/error_text" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="" 
       android:textAppearance="?android:attr/textAppearanceSmall" /> 

     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 

Puis ajoutez à la mise en page de votre activité principale, avec un autre fragment qui contient votre "tableau de bord":

<RelativeLayout ... > 
    <fragment 
     android:id="@+id/loginFragment" 
     android:name="com.example.demo.LoginFragment" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" /> 

    ... 
</RelativeLayout> 

Ceci a juste montré brièvement comment la bibliothèque pourrait être utilisée. Voir la documentation pour plus d'informations sur la façon de l'utiliser. Jetez également un coup d'oeil à l'application de démonstration sur GitHub.

Comme mentionné dans la réponse acceptée; pour déconnecter l'utilisateur lorsque l'application est fermée, écoutez l'événement onStop() dans votre activité principale et appeler session.logout(), comme ceci:

UserApp.Session session; 
session.logout();