2016-03-25 2 views
0

Ich versuche, einen Sperrbildschirm für meine App anzuwenden.Android App Lock

Ich dachte Prozess ist, wenn das Passwort falsch geht Seite A ist und wenn sie richtig gehen zu Seite B.

diesen

geschrieben I'v
int PIN = R.id.Txt_password; 
int pass = 4444; 
if (PIN == pass) { 


    //Selecting the button which is to be pressed 
    Button Btn_Submit = (Button) findViewById(R.id.Btn_Submit); 
    //Creates a listener for the button to react when it is pressed 
    Btn_Submit.setOnClickListener(new View.OnClickListener() { 
     //Gives the button instructions when it is pressed 
     @Override 
     public void onClick(View view) { 
      Intent startIntent = new Intent(getApplicationContext(), 
        Control_Screen.class); 
      startActivity(startIntent); 

     } 
    }); 
} else { 
    //Selecting the button which is to be pressed 
    Button Btn_Submit = (Button) findViewById(R.id.Btn_Submit); 
    //Creates a listener for the button to react when it is pressed 
    Btn_Submit.setOnClickListener(new View.OnClickListener() { 
     //Gives the button instructions when it is pressed 
     @Override 
     public void onClick(View view) { 
      Intent startIntent = new Intent(getApplicationContext(), 
        Password.class); 
      startActivity(startIntent); 
     } 
    }); 
} 

, die ausgefallen ist.

Dies ist der Code für Txt_password

<EditText 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:inputType="numberPassword" 
     android:ems="10" 
     android:id="@+id/Txt_password" 
     android:layout_below="@+id/Lbl_EnterPassword" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="50dp" 
     android:text="4444" /> 

ich das Passwort zu denken ist 4444, die in hart codierten aber iv bekam das Gefühl, dass das nicht der Fall ist, und es ist die Frage.

Wie würde ich das richtig machen?

Vielleicht gibt es eine Möglichkeit, den Text, den der Benutzer in das Passwortfeld eingibt, in eine Zeichenfolge zu platzieren?

+0

Sie wissen, dass Sie versuchen, dies zu implementieren, bietet keinen Sicherheitsvorteil? Abgesehen davon, dass es nicht funktioniert ... –

+0

Danke. Für den Moment lerne ich gerade wie zu Sachen. Sicherheit ist ein Job für später im Projekt. Nochmals vielen Dank für die Beratung. – Kie21

+0

Ich habe meine Antwort bearbeitet. Schau mal. –

Antwort

0

Sie holen nicht den Text Ihrer EditText. Sie können es erhalten, indem Sie:

EditText passwordText = (EditText) findViewById(R.id.Txt_password); 
int PASS = Integer.parseInt(passwordText.getText().toString()); 

Und jetzt tun Sie den Vergleich.

int pass = 4444; 

if(pass == PASS) { 
    ... 
    ... 
} 

Aber, müssen Sie dies in den onClickListener Ihre Taste tun. Siehe den Referenzcode unter:

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

    //Creates a listener for the button to react when it is pressed 
    Btn_Submit.setOnClickListener(new View.OnClickListener() { 
     //Gives the button instructions when it is pressed 
     @Override 
     public void onClick(View view) { 
      EditText passwordText = (EditText) findViewById(R.id.Txt_password); 
      int pass = Integer.parseInt(passwordText.getText().toString()); 

      if(pass == 4444) { 
       Intent startIntent = new Intent(getApplicationContext(), Control_Screen.class); 
       startActivity(startIntent); 
      } 
      else { 
       Intent startIntent = new Intent(getApplicationContext(), Password.class); 
       startActivity(startIntent); 
    }); 
+0

Diese Lösung bringt mich zur Kontrollseite, unabhängig davon, ob das Passwort richtig oder falsch ist. Habe ich recht, wenn ich denke, dass es meine if-Aussage sein könnte? Alle anderen Lösungen führen mich auf die falsche Passwort-Seite. Auch ich war nicht ich, der diese Antworten als eine Down-Abstimmung markiert. – Kie21

+0

Siehe die bearbeitete Antwort. –

+0

Das hat mein Problem perfekt gelöst. Danke für deine Hilfe. Sehr geschätzt. – Kie21

0

Vielleicht wollten Sie das tun?

EditText txtPassword = (EditText) findViewById(R.id.Txt_password); 
int PIN = Integer.parseInt(txtPassword.getText().toString()); 

if (PIN == 4444) { } 

R.id.Txt_password wird nie gleich 4444

0

Sie müssen den Text aus dem EditText Feld bekommen und es ändern Wert auf Integer, wie folgt aus:

EditText passText = (EditText) findViewById(R.id.Txt_password); 
int PIN = Integer.valueOf(passText.getText().toString()); 

if (PIN == 4444) { 
    ... 
} 
0

Ich glaube, Sie besser gehen würde die andersherum. Ändern Sie nicht den gesamten Listener für Schaltflächen und erstellen Sie keine anonymen Objekte innerhalb des Methodenaufrufs. Wie wäre es, die Bindung von Ihrer eigentlichen Geschäftslogik zu trennen? Bedenken Sie:

public class YourFragment extends Fragment implements View.OnClickListener { 

    private Button Btn_Submit; 
    private EditText Txt_password; 

    private final PIN = 4444; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     // inflate layout of fragment or set content if this is an activity 
     (...) 

     Btn_Submit = (Button) findViewById(R.id.Btn_Submit); 
     Btn_Submit.setOnClickListener(this); 

     Txt_password = (EditText) findViewById(R.id.Txt_password); 
    } 

    @Override 
    public void onClick(View v) { 
     // if you have multiple elements with click listeners in this fragment/activity, separate calls here. I'm assuming we get only the submit button here. 

     Integer input_pin = Integer.parseInt(Txt_password.getText()); 
     if (PIN == input_pin) { 
      Intent startIntent = new Intent(getApplicationContext(), Control_Screen.class); 
      startActivity(startIntent); 
     } 
     // if pin wrong, reset text field and optionally show the user a notification 
     Txt_password.setText(""); 
    } 
} 

Wenn Sie es noch sauber, setzen Sie den gesamten Code aus onClick in eine Methode nannte es onSubmitPin() und rufen von onClick machen wollte, wenn der Submit-Button gedrückt wurde.