2012-02-19 13 views
8

He creado mi primera aplicación y me gustaría protegerla con una contraseña. Me parece bien almacenar la contraseña en los archivos Java y el método debe ser lo más simple posible porque no tengo experiencia con Java o incluso con XML antes de esta aplicación. He tenido algunos intentos fallidos, así que esperaba que alguien me pudiera ayudar.Contraseña protegiendo mi aplicación de Android (la manera más simple)

He creado el diseño con un campo EditarTexto:

<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 /> 

y un botón de envío:

<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"/> 

El archivo 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(); 


        }}}); 
    }} 

Respuesta

12

Este parte:

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

es incorrecto. Debe ser

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

Al comparar los tipos de datos primitivos (como int, char, boolean) que puede utilizar ==, !=, etc.
objetos Al comparar (como String, Car, etc) que necesita para utilizar el .equals() método.

See also this page.

+0

¡Gracias hizo el truco! – SuperKombol

-6

En la edición de XML campo de texto se puede añadir

android:password="true" 
+1

El uso de este marcador mejorará su aplicación al hacer que el texto de edición tenga puntos de contraseña en lugar de mostrar los caracteres reales, pero este indicador no solucionará los problemas que está teniendo. –

+0

El cuadro de texto de edición muestra los puntos de todos modos ya que el tipo de entrada se ha definido como contraseña de texto en el xml. Gracias. – SuperKombol

9

No es de ninguna manera segura para comprobar la contraseña de esa manera.

Hay varias maneras de eludir fácilmente su código de

  1. Llamada de la actividad directamente desde otra aplicación

  2. Lectura de la smali code desmontado para recuperar la contraseña

  3. Modificación del código de usando smali para saltar siempre al bloque de código

soluciones disponibles para solucionar estos problemas:

  1. oscuro de su código (peor opción, pero podría ser suficiente en la mayoría de los casos)

  2. Comparando los Hashed Password: mucho más seguro. Pero debería ser un Hash salado. (There is also a more simple to understand explaination for the implementation)

  3. Use a HTTP Request a un servidor suyo para ocultar el mecanismo detrás de la comprobación de la contraseña.(Pero eso requiere que su aplicación solicite permisos de red)

+1

Hmm, como el asker es débil en Java, recomendaría la solución dos, que podría implementarse así: 'SHA1.Sha1Hash (passwordGoesHere);' –

+1

Gracias por la sugerencia, he agregado un enlace para superar ese problema. – devsnd

+0

Gracias por el consejo, investigaré sus soluciones para cuando construya algo más sustancial. – SuperKombol

Cuestiones relacionadas