Android - Anmeldebildschirm

Eine Anmeldeanwendung ist der Bildschirm, auf dem Sie aufgefordert werden, sich bei einer bestimmten Anwendung anzumelden. Möglicherweise haben Sie es gesehen, als Sie sich bei Facebook, Twitter usw. Angemeldet haben

In diesem Kapitel wird erläutert, wie Sie einen Anmeldebildschirm erstellen und die Sicherheit verwalten, wenn falsche Versuche unternommen werden.

Zuerst müssen Sie zwei TextView definieren, in denen der Benutzername und das Passwort des Benutzers abgefragt werden. Das Passwort muss TextView habeninputTypeauf Passwort setzen. Die Syntax ist unten angegeben -

<EditText
   android:id = "@+id/editText2"
   android:layout_width = "wrap_content"
   android:layout_height = "wrap_content"
   android:inputType = "textPassword" />

<EditText
   android:id = "@+id/editText1"
   android:layout_width = "wrap_content"
   android:layout_height = "wrap_content"
/>

Definieren Sie eine Schaltfläche mit Anmeldetext und legen Sie deren fest onClickEigentum. Definieren Sie anschließend die in der Eigenschaft onClick erwähnte Funktion in der Java-Datei.

<Button
   android:id = "@+id/button1"
   android:layout_width = "wrap_content"
   android:layout_height = "wrap_content"
   android:onClick = "login"
   android:text = "@string/Login" 
/>

In der Java-Datei erhalten Sie innerhalb der Methode von onClick den Benutzernamen und den Kennworttext mit getText() und toString() Methode und passen Sie es mit dem Text mit equals() Funktion.

EditText username = (EditText)findViewById(R.id.editText1);
EditText password = (EditText)findViewById(R.id.editText2);		

public void login(View view){
   if(username.getText().toString().equals("admin") && password.getText().toString().equals("admin")){
   
   //correcct password
   }else{
   //wrong password
}

Als letztes müssen Sie einen Sicherheitsmechanismus bereitstellen, damit unerwünschte Versuche vermieden werden. Initialisieren Sie dazu eine Variable und dekrementieren Sie sie bei jedem falschen Versuch. Wenn der Wert 0 erreicht ist, deaktivieren Sie die Anmeldeschaltfläche.

int counter = 3;
counter--;

if(counter==0){
   //disble the button, close the application e.t.c
}

Beispiel

Hier ist ein Beispiel für eine Anmeldeanwendung. Es wird eine Basisanwendung erstellt, mit der Sie nur drei Mal versuchen können, sich bei einer Anwendung anzumelden.

Um mit diesem Beispiel zu experimentieren, können Sie dies auf einem tatsächlichen Gerät oder in einem Emulator ausführen.

Schritte Beschreibung
1 Sie werden Android Studio verwenden, um eine Android-Anwendung unter einem Paket com.example.sairamkrishna.myapplication zu erstellen.
3 Ändern Sie die Datei src / MainActivity.java, um den erforderlichen Code hinzuzufügen.
4 Ändern Sie res / layout / activity_main, um entsprechende XML-Komponenten hinzuzufügen
5 Führen Sie die Anwendung aus und wählen Sie ein laufendes Android-Gerät aus. Installieren Sie die Anwendung darauf und überprüfen Sie die Ergebnisse

Es folgt der Inhalt der geänderten Hauptaktivitätsdatei src/MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;

import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends Activity  {
   Button b1,b2;
   EditText ed1,ed2;

   TextView tx1;
   int counter = 3;

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

      b1 = (Button)findViewById(R.id.button);
      ed1 = (EditText)findViewById(R.id.editText);
      ed2 = (EditText)findViewById(R.id.editText2);

      b2 = (Button)findViewById(R.id.button2);
      tx1 = (TextView)findViewById(R.id.textView3);
      tx1.setVisibility(View.GONE);

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            if(ed1.getText().toString().equals("admin") &&
               ed2.getText().toString().equals("admin")) {
                  Toast.makeText(getApplicationContext(),
                     "Redirecting...",Toast.LENGTH_SHORT).show();
               }else{
                  Toast.makeText(getApplicationContext(), "Wrong 
                     Credentials",Toast.LENGTH_SHORT).show();

                  tx1.setVisibility(View.VISIBLE);
                  tx1.setBackgroundColor(Color.RED);
                  counter--;
                  tx1.setText(Integer.toString(counter));

                  if (counter == 0) {
                     b1.setEnabled(false);
                  }
               }
         }
      });

      b2.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            finish();
         }
      });
   }
}

Es folgt der geänderte Inhalt der XML res/layout/activity_main.xml.

Im folgenden Code abc zeigt über das Logo von tutorialspoint.com an
<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
   xmlns:tools = "http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height = "match_parent" android:paddingLeft= "@dimen/activity_horizontal_margin"
   android:paddingRight = "@dimen/activity_horizontal_margin"
   android:paddingTop = "@dimen/activity_vertical_margin"
   android:paddingBottom = "@dimen/activity_vertical_margin" tools:context = ".MainActivity">
   
   <TextView android:text = "Login" android:layout_width="wrap_content"
      android:layout_height = "wrap_content"
      android:id = "@+id/textview"
      android:textSize = "35dp"
      android:layout_alignParentTop = "true"
      android:layout_centerHorizontal = "true" />
      
   <TextView
      android:layout_width = "wrap_content"
      android:layout_height = "wrap_content"
      android:text = "Tutorials point"
      android:id = "@+id/textView"
      android:layout_below = "@+id/textview"
      android:layout_centerHorizontal = "true"
      android:textColor = "#ff7aff24"
      android:textSize = "35dp" />
      
   <EditText
      android:layout_width = "wrap_content"
      android:layout_height = "wrap_content"
      android:id = "@+id/editText"
      android:hint = "Enter Name"
      android:focusable = "true"
      android:textColorHighlight = "#ff7eff15"
      android:textColorHint = "#ffff25e6"
      android:layout_marginTop = "46dp"
      android:layout_below = "@+id/imageView"
      android:layout_alignParentLeft = "true"
      android:layout_alignParentStart = "true"
      android:layout_alignParentRight = "true"
      android:layout_alignParentEnd = "true" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:inputType="textPassword"
      android:ems="10"
      android:id="@+id/editText2"
      android:layout_below="@+id/editText"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:layout_alignRight="@+id/editText"
      android:layout_alignEnd="@+id/editText"
      android:textColorHint="#ffff299f"
      android:hint="Password" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Attempts Left:"
      android:id="@+id/textView2"
      android:layout_below="@+id/editText2"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true"
      android:textSize="25dp" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="New Text"
      android:id="@+id/textView3"
      android:layout_alignTop="@+id/textView2"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:layout_alignBottom="@+id/textView2"
      android:layout_toEndOf="@+id/textview"
      android:textSize="25dp"
      android:layout_toRightOf="@+id/textview" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="login"
      android:id="@+id/button"
      android:layout_alignParentBottom="true"
      android:layout_toLeftOf="@+id/textview"
      android:layout_toStartOf="@+id/textview" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Cancel"
      android:id="@+id/button2"
      android:layout_alignParentBottom="true"
      android:layout_toRightOf="@+id/textview"
      android:layout_toEndOf="@+id/textview" />

</RelativeLayout>

Es folgt der Inhalt der res/values/string.xml.

<resources>
   <string name="app_name">My Application</string>
</resources>

Es folgt der Inhalt von AndroidManifest.xml Datei.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name=".MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Versuchen wir, unsere gerade geänderte Anwendung auszuführen. Ich nehme an, Sie hatten Ihre erstelltAVDwährend der Einrichtung der Umgebung. Um die App von Android Studio aus auszuführen, öffnen Sie eine der Aktivitätsdateien Ihres Projekts und klicken Sie in

der Symbolleiste auf das Symbol Ausführen . Android Studio installiert die App auf Ihrer AVD und startet sie. Wenn mit Ihrem Setup und Ihrer Anwendung alles in Ordnung ist, wird das folgende Emulatorfenster angezeigt:

Geben Sie etwas in das Feld Benutzername und Passwort ein und klicken Sie dann auf die Anmeldeschaltfläche. Ich habe abc in das Feld Benutzername und abc in das Feld Passwort eingegeben. Ich habe einen fehlgeschlagenen Versuch. Dies ist unten gezeigt -

Wenn Sie dies noch zwei Mal tun, werden Sie feststellen, dass Sie noch 0 Anmeldeversuche haben und Ihre Anmeldeschaltfläche deaktiviert ist.

Öffnen Sie nun die Anwendung erneut und geben Sie diesmal den richtigen Benutzernamen als Administrator und das Passwort als Administrator ein und klicken Sie auf Anmelden. Sie werden erfolgreich angemeldet.

Wenn der Benutzer auf die Schaltfläche Abbrechen drückt, wird eine Anwendung des Anmeldebildschirms geschlossen.