2012-02-19 11 views
8

Ho creato la mia prima app e vorrei proteggerla con password. Va bene per me memorizzare la password nei file Java e il metodo deve essere il più semplice possibile perché non ho esperienza di java o anche xml prima di questa app. Ho avuto alcuni tentativi e ho fallito quindi speravo che qualcuno potesse darmi una mano.Protezione con password della mia app Android (il modo più semplice)

ho creato il layout con un campo EditText:

<EditText 
android:id="@+id/passwordedittext" 
android:layout_width="200dp" 
android:layout_height="50dp" 
android:inputType="textPassword" 
android:layout_marginTop="40dp" 
android:layout_marginLeft="20dp"> 
<requestFocus /> 

e un pulsante di invio:

<Button 
android:id="@+id/submitbutton" 
android:layout_width="50dp" 
android:layout_height="50dp" 
android:layout_marginTop="40dp" 
android:background="@drawable/bgo" 
android:clickable="true" 
android:layout_gravity="right|center_horizontal" 
android:layout_marginRight="20dp"/> 

Il file Java:

package com.berry; 
import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.Button; 
import android.widget.EditText; 


public class password extends Activity{ 

MediaPlayer mpbuttonclick; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN,WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

    setContentView(R.layout.password); 

    mpbuttonclick = MediaPlayer.create(this, R.raw.keypress); 

    Button sumbitButton = (Button) findViewById(R.id.submitbutton); 
    sumbitButton.setOnClickListener(new View.OnClickListener() {   
     public void onClick(View v){ 
     EditText passwordEditText = (EditText) findViewById(R.id.passwordedittext); 
        if(passwordEditText.getText().toString()=="MyPasswordHere"){ 
         startActivity(new Intent("com.berry.intro")); 
         mpbuttonclick.start(); 


        }}}); 
    }} 

risposta

12

Questo parte:

if(passwordEditText.getText().toString()=="MyPasswordHere") 

non è corretto. Dovrebbe essere

if(passwordEditText.getText().toString().equals("MyPasswordHere")) 

Quando si confrontano tipi di dati primitivi (come int, char, boolean) si possono usare ==, !=, ecc
oggetti Quando si confrontano (come String, Car, ecc) è necessario utilizzare il Metodo .equals().

See also this page.

+0

Grazie, ha fatto il trucco! – SuperKombol

-6

Nel campo di modifica testo XML è possibile aggiungere

android:password="true" 
+1

L'utilizzo di questo flag migliorerà la tua app rendendo il testo di modifica con punti password invece di mostrare i caratteri reali, ma questo flag non risolverà i problemi che stai riscontrando. –

+0

La casella di testo di modifica mostra comunque i punti poiché il tipo di input è stato definito come textpassword in xml. Grazie. – SuperKombol

9

È cassaforte in alcun modo di controllare la password in quel modo.

Ci sono diversi modi per aggirare facilmente il vostro codice di

  1. Chiamando l'attività direttamente da un altro App

  2. Lettura del smontato smali code per recuperare la password

  3. Modificare il codice usando smali per saltare sempre nel codice

soluzioni disponibili per risolvere questi problemi:

  1. Obscure codice (opzione peggiore, ma potrebbe essere sufficiente nella maggior parte dei casi)

  2. confrontando il Hashed Password: molto più sicuro. Ma dovrebbe essere un hash salato. (There is also a more simple to understand explaination for the implementation)

  3. Use a HTTP Request a un server di vostro per nascondere il meccanismo che sta dietro la verifica della password.(Ma ciò richiede che la tua app richieda i permessi di rete)

+1

Hmm, poiché il richiedente è debole in java, consiglierei la soluzione due, che potrebbe essere implementata in questo modo: 'SHA1.Sha1Hash (passwordGoesHere);' –

+1

Grazie per il suggerimento, ho aggiunto un link per superare questo problema. – devsnd

+0

Grazie per il consiglio, cercherò le vostre soluzioni per quando costruirò qualcosa di più sostanziale. – SuperKombol

Problemi correlati