From 76255b8996caf322d65763031e14ae6222b1d334 Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 14 May 2022 15:48:14 +0200 Subject: [PATCH] Added PGP key import button --- app/build.gradle | 4 ++++ .../email/FragmentOptionsEncryption.java | 22 ++++++++++++++++++- .../main/java/eu/faircode/email/Helper.java | 3 ++- .../layout/fragment_options_encryption.xml | 12 ++++++++++ app/src/main/res/values/strings.xml | 4 ++++ 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ca4ea3acdf..0fdbb6d274 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -163,6 +163,7 @@ android { buildConfigField "String", "GPA_URI", localProperties.getProperty("gpa.uri", "\"\"") buildConfigField "String", "INFO_URI", localProperties.getProperty("info.uri", "\"\"") buildConfigField "String", "DEV_DOMAIN", localProperties.getProperty("dev.domain", "\"\"") + buildConfigField "String", "FDROID", "\"https://f-droid.org/packages/%s/\"" } fdroid { dimension "all" @@ -179,6 +180,7 @@ android { buildConfigField "String", "GPA_URI", "\"\"" buildConfigField "String", "INFO_URI", "\"\"" buildConfigField "String", "DEV_DOMAIN", "\"\"" + buildConfigField "String", "FDROID", "\"https://f-droid.org/packages/%s/\"" } play { dimension "all" @@ -196,6 +198,7 @@ android { buildConfigField "String", "GPA_URI", "\"\"" buildConfigField "String", "INFO_URI", "\"\"" buildConfigField "String", "DEV_DOMAIN", "\"\"" + buildConfigField "String", "FDROID", "\"\"" } amazon { dimension "all" @@ -213,6 +216,7 @@ android { buildConfigField "String", "GPA_URI", "\"\"" buildConfigField "String", "INFO_URI", "\"\"" buildConfigField "String", "DEV_DOMAIN", "\"\"" + buildConfigField "String", "FDROID", "\"\"" } } diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java index 5fad0daccd..5e19e6b5c4 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsEncryption.java @@ -94,6 +94,7 @@ public class FragmentOptionsEncryption extends FragmentBase private SwitchCompat swAutocrypt; private SwitchCompat swAutocryptMutual; private SwitchCompat swEncryptSubject; + private Button btnImportPgp; private Spinner spSignAlgoSmime; private Spinner spEncryptAlgoSmime; @@ -142,6 +143,7 @@ public class FragmentOptionsEncryption extends FragmentBase swAutocrypt = view.findViewById(R.id.swAutocrypt); swAutocryptMutual = view.findViewById(R.id.swAutocryptMutual); swEncryptSubject = view.findViewById(R.id.swEncryptSubject); + btnImportPgp = view.findViewById(R.id.btnImportPgp); spSignAlgoSmime = view.findViewById(R.id.spSignAlgoSmime); spEncryptAlgoSmime = view.findViewById(R.id.spEncryptAlgoSmime); @@ -287,6 +289,24 @@ public class FragmentOptionsEncryption extends FragmentBase } }); + btnImportPgp.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + String provider = prefs.getString("openpgp_provider", Helper.PGP_OPENKEYCHAIN_PACKAGE); + + PackageManager pm = v.getContext().getPackageManager(); + Intent intent = pm.getLaunchIntentForPackage(provider); + if (intent == null) + if (TextUtils.isEmpty(BuildConfig.FDROID)) + intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + provider)); + else + intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format(BuildConfig.FDROID, provider))); + else + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + v.getContext().startActivity(intent); + } + }); + // S/MIME spSignAlgoSmime.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -585,7 +605,7 @@ public class FragmentOptionsEncryption extends FragmentBase swAutoDecrypt.setChecked(prefs.getBoolean("auto_decrypt", false)); swAutoUndoDecrypt.setChecked(prefs.getBoolean("auto_undecrypt", false)); - String provider = prefs.getString("openpgp_provider", "org.sufficientlysecure.keychain"); + String provider = prefs.getString("openpgp_provider", Helper.PGP_OPENKEYCHAIN_PACKAGE); spOpenPgp.setTag(provider); for (int pos = 0; pos < openPgpProvider.size(); pos++) if (provider.equals(openPgpProvider.get(pos))) { diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 89990a9f31..6e3272c5f7 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -175,6 +175,7 @@ public class Helper { static final int AUTOLOCK_GRACE = 7; // seconds static final long PIN_FAILURE_DELAY = 3; // seconds + static final String PGP_OPENKEYCHAIN_PACKAGE = "org.sufficientlysecure.keychain"; static final String PGP_BEGIN_MESSAGE = "-----BEGIN PGP MESSAGE-----"; static final String PGP_END_MESSAGE = "-----END PGP MESSAGE-----"; @@ -535,7 +536,7 @@ public class Helper { static String getOpenKeychainPackage(Context context) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); - return prefs.getString("openpgp_provider", "org.sufficientlysecure.keychain"); + return prefs.getString("openpgp_provider", Helper.PGP_OPENKEYCHAIN_PACKAGE); } static boolean isOpenKeychainInstalled(Context context) { diff --git a/app/src/main/res/layout/fragment_options_encryption.xml b/app/src/main/res/layout/fragment_options_encryption.xml index 45d03367ff..23ca41c963 100644 --- a/app/src/main/res/layout/fragment_options_encryption.xml +++ b/app/src/main/res/layout/fragment_options_encryption.xml @@ -243,6 +243,18 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/swAutocryptMutual" app:switchPadding="12dp" /> + +