From bd73518bd920fd214376a5aacf034e0bd71aeae3 Mon Sep 17 00:00:00 2001 From: str4d Date: Fri, 19 Sep 2014 13:58:55 +0000 Subject: [PATCH] Password check in edit contact page (because it could be opened by an Intent) --- .../addressbook/EditContactFragment.java | 62 +++++++++++++------ 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/i2p/bote/android/addressbook/EditContactFragment.java b/app/src/main/java/i2p/bote/android/addressbook/EditContactFragment.java index 6fcbdd3..a8b9a9b 100644 --- a/app/src/main/java/i2p/bote/android/addressbook/EditContactFragment.java +++ b/app/src/main/java/i2p/bote/android/addressbook/EditContactFragment.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.security.GeneralSecurityException; +import i2p.bote.I2PBote; import i2p.bote.android.R; import i2p.bote.android.util.BoteHelper; import i2p.bote.android.util.EditPictureFragment; @@ -75,13 +76,52 @@ public class EditContactFragment extends EditPictureFragment { public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - String newName = getArguments().getString(NEW_NAME); - mNameField = (EditText) view.findViewById(R.id.contact_name); mDestinationField = (EditText) view.findViewById(R.id.destination); mTextField = (EditText) view.findViewById(R.id.text); mError = (TextView) view.findViewById(R.id.error); + Button b = (Button) view.findViewById(R.id.import_destination_from_file); + b.setOnClickListener(new View.OnClickListener() { + public void onClick(View view) { + Intent i = new Intent(Intent.ACTION_GET_CONTENT); + i.setType("text/plain"); + i.addCategory(Intent.CATEGORY_OPENABLE); + try { + startActivityForResult( + Intent.createChooser(i, + getResources().getString(R.string.select_email_destination_file)), + REQUEST_DESTINATION_FILE); + } catch (android.content.ActivityNotFoundException ex) { + Toast.makeText(getActivity(), R.string.please_install_a_file_manager, + Toast.LENGTH_SHORT).show(); + } + } + }); + + if (I2PBote.getInstance().isPasswordRequired()) { + // Request a password from the user. + BoteHelper.requestPassword(getActivity(), new BoteHelper.RequestPasswordListener() { + @Override + public void onPasswordVerified() { + initializeContact(); + } + + @Override + public void onPasswordCanceled() { + getActivity().setResult(Activity.RESULT_CANCELED); + getActivity().finish(); + } + }); + } else { + // Password is cached, or not set. + initializeContact(); + } + } + + private void initializeContact() { + String newName = getArguments().getString(NEW_NAME); + if (mDestination != null) { try { Contact contact = BoteHelper.getContact(mDestination); @@ -102,24 +142,6 @@ public class EditContactFragment extends EditPictureFragment { mNameField.setText(newName); mDestinationField.setText(getArguments().getString(NEW_DESTINATION)); } - - Button b = (Button) view.findViewById(R.id.import_destination_from_file); - b.setOnClickListener(new View.OnClickListener() { - public void onClick(View view) { - Intent i = new Intent(Intent.ACTION_GET_CONTENT); - i.setType("text/plain"); - i.addCategory(Intent.CATEGORY_OPENABLE); - try { - startActivityForResult( - Intent.createChooser(i, - getResources().getString(R.string.select_email_destination_file)), - REQUEST_DESTINATION_FILE); - } catch (android.content.ActivityNotFoundException ex) { - Toast.makeText(getActivity(), R.string.please_install_a_file_manager, - Toast.LENGTH_SHORT).show(); - } - } - }); } @Override