0

私は Java の経験が少しあり、Android 環境は初めてです。以前、Java で暗号化アルゴリズムを作成しました (単純なシフト暗号を使用)。その後、Android コードにうまく収まるように変更を加えましたが、まだ完全には機能していません。計画では、ユーザーが 1 つの EditText フィールドにプレーンテキストを入力し、2 番目にキー、3 番目に電子メールを入力するようにします。「送信」ボタンをクリックすると、暗号文が電子メールに送信されます。以下では、コメントに Java バージョンの main メソッドを含めています (現在は onCreate メソッドにあります)。

public class ScreenNext extends Activity {

int key = 0;
static char ch;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_screen_next);

    EditText emailT;//Import  EditTexts (Key and Email)  
    Button send = (Button) findViewById(R.id.bSend);//Import button1 (Send)         final EditText passT = (EditText) findViewById(R.id.etTogg);//passT variable for Password Text for EditText field
    final EditText keyT = (EditText) findViewById(R.id.etKey);
    final EditText passT = (EditText) findViewById(R.id.etTogg);//passT variable for Password Text for EditText field

    //convert the JOption Panes now into Android equivalents
    //String choice = JOptionPane.showInputDialog("(1) Encrypt \n"+ "(2) Close");
    //String subKey = JOptionPane.showInputDialog(null, "Enter your ideal key");
    //String message = JOptionPane.showInputDialog(null, "Enter message");
    //String cText = subcipher_1.message(choice, subKey, message);
    //JOptionPane.showMessageDialog(null, cText);//send cText as email

}//End onCreate

public static String message(String choice, String subKey, String message) {


    int Option = Integer.parseInt(choice);//Must pareseInt
    int key = Integer.parseInt(subKey);
    message = message.toLowerCase();

        //If the key is 26, prompt the user to change the key

        if (key % 26 == 0) {

            //Toast.makeText(getApplicationContext(), "You can't use a modulus of 26 as a key", Toast.LENGTH_LONG).show();

        }

    ScreenNext subcipher_1 = null;
    String CipherTxt = subcipher_1.encrypt(message, key);
    return CipherTxt;
}

// Message prompt method finished, now we create the method that has the
// encrypting algorithms
public static String encrypt(String Txt, int key) {


    //local var cipherText of type string is init empty
    String CipherTxt = "";//May be able to remove this'un 
    String cText="";
    //enhanced for loop 
    // start at 0, go until "as long as input text" 
    for (int i = 0; i < Txt.length(); i++) {
        //get a char from the string at index i (start at 0 work through to end of string)
        // and store in local var extractedChar for type char
        char extractedChar = Txt.charAt(i);
        /* enhanced for loop 
         * start at 0, go until end of user entered cipherKeyValue
         * either set to lowercase a or add one to the char
         * uses the checkifz method
         */
        for (int j = 0; j < key; j++) {
            ScreenNext subcipher_1 = null;
            if (subcipher_1.checkIfZ(extractedChar) == true) {
                extractedChar = 'a';
            } else {
                extractedChar++;
            }
            CipherTxt= new StringBuilder().append(extractedChar).toString();
        }
        //add extracted char to builder object
        //change object builder to string and assing to cipherText of type String
        //create new object builder from StringBuilder class
        cText = cText.concat(CipherTxt);
    }
    //Pass the cipherText value out of the method to whom ever called it

    return cText;
}
// public method properCase, makes all strings lowercase
public String properCase(String input) {
    if (input.length() == 0) {
        return "";
    }
    if (input.length() == 1) {
        return input.toLowerCase();//currently set to default; will shtill compile 
    }
    return input.substring(0).toLowerCase();//no locale set
}
//Check if the letter is Z so we can loop back to A
public static boolean checkIfZ(char cInput) {
    boolean yesNo = false;
    if (cInput++ == 0x7A) {
        yesNo = true;
    }
    return yesNo;
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.screen_next, menu);
    return true;
}

}

当然のことながら、JOptionPane が Android に存在しないことは理解しているので、ユーザーに EditText フィールドに入力を求めるプロンプトを出します。プレーンテキスト入力用の passT、キー入力用の keyT、およびユーザーの電子メール用の emailT の 3 つがあります。

EditText フィールドを暗号化およびメッセージ メソッドの対応する変数に組み込むにはどうすればよいですか?

そして、アドバイスは大歓迎です。

4

1 に答える 1

0

Click リスナーをSendボタンに追加し、onClickイベントでフィールドから値を取得します。

send.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    String keyText = keyT.getText().toString();
    String passText = passT.getText().toString();
}
});
于 2013-04-10T17:17:15.610 に答える