Защита паролем моего приложения для Android (простой способ) - PullRequest
9 голосов
/ 19 февраля 2012

Я создал свое первое приложение и хотел бы защитить его паролем. Это нормально для меня, чтобы сохранить пароль в файлах Java, и метод должен быть настолько простым, насколько это возможно, потому что у меня нет опыта Java или даже XML до этого приложения. У меня было несколько попыток, но я потерпел неудачу, поэтому я надеялся, что кто-нибудь может мне помочь.

Я создал макет с полем 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 />

и кнопка отправки:

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

Файл 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();


                    }}});
    }}

Ответы [ 3 ]

13 голосов
/ 19 февраля 2012

Эта часть:

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

неверна.Оно должно быть

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

При сравнении примитивных типов данных (например, int, char, boolean) вы можете использовать ==, != и т. Д.
При сравнении объектов(например, String, Car и т. д.) вам необходимо использовать метод .equals().

См. также эту страницу.

11 голосов
/ 19 февраля 2012

Ни в коем случае нельзя так проверять свой пароль.

Есть несколько способов легко обойти ваш код

  1. Вызов действия напрямую из другого приложения

  2. Чтение разобранного кода smali для восстановления пароля

  3. Изменение кода с помощью smali, чтобы всегда переходить в кодовый блок

Решения, доступные для решения этих проблем:

  1. Затенить ваш код (наихудший вариант, но может быть достаточно в большинстве случаев)

  2. Сравнение хешированного пароля : намного безопаснее. Но должен быть соленый хэш. (Существует также более простое для понимания объяснение реализации)

  3. Используйте HTTP-запрос к вашему серверу, чтобы скрыть механизм проверки пароля. (Но для этого требуется, чтобы ваше приложение запрашивало сетевые разрешения)

0 голосов
/ 19 февраля 2012

В текстовое поле редактирования XML вы можете добавить

   android:password="true"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...