2016-03-25 12 views
0

私のアプリにロック画面を適用しようとしています。Android App Lock

私はパスワードが行くページA正しくない場合は、プロセスがあると思ったし、I'v

ページBへの正しい行けば障害が発生しました。この

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); 
     } 
    }); 
} 

を書かれました。

これは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" /> 

ためのコードである私は、パスワードを考えているが、ハードで符号化されたが、IVはそうではなく、問題があるという感覚を持っている4444です。

どうすればこの権利を得ることができますか?

多分、ユーザーがパスワードフィールドに入力するテキストを文字列に配置する方法がありますか?

+0

これを実装しようとしても、セキュリティ上の利点はありません。それが機能しないという事実を除いて... –

+0

ありがとう。今のところ私は物事を学ぶだけです。セキュリティは、プロジェクトの後の仕事です。もう一度アドバイスをいただきありがとうございます。 – Kie21

+0

私は自分の答えを編集しました。見てみましょう。 –

答えて

0

を等しくすることはありません。

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

ここで比較を行います。

int pass = 4444; 

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

ただし、ボタンのonClickListenerの内部でこれを行う必要があります。下記参照コードを参照してください:

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

この解決策は、パスワードが間違っているかどうかに関係なく、コントロールページに移動します。私はそれが私のifの陳述かもしれないと考えているのですか?他のすべてのソリューションは、パスワードの間違ったページに私を連れて行きます。 また、私はこれらの回答を投票としてマークした私ではありませんでした。 – Kie21

+0

編集された回答を参照してください。 –

+0

これは私の問題を完全に解決しました。ご協力いただきありがとうございます。とても有難い。 – Kie21

0

あなたはこれを行うつもりでしたか?

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

if (PIN == 4444) { } 

R.id.Txt_passwordあなたのEditTextのテキストを取得していない4444

0

あなたはのEditTextフィールドからテキストを取得し、値を整数にそれを変更する必要があり、このように:

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

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

私はあなたが行くほうが良いと思います他の方法で。ボタンリスナー全体を変更しないで、メソッド呼び出し内に匿名オブジェクトを作成しないでください。バインディングを実際のビジネスロジックから分離するのはどうですか?あなたは、それがさらにきれいにするonSubmitPin()と呼ばれる方法へのonClickから全体のコードを入れて送信ボタンを押したときのonClickからそれを呼び出すしたい場合

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(""); 
    } 
} 

:これを考えてみましょう。