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" />
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9a071f2186..05b18d87e0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -670,10 +670,13 @@
Encrypt by default
Automatically decrypt messages
Undo decryption on closing conversation
+
OpenPGP provider
Use Autocrypt
Autocrypt mutual mode
Encrypt subject
+ Import key
+
Signature algorithm
Encryption algorithm
@@ -689,6 +692,7 @@
This will open to the Android security settings.
Keys and certificates can generally be found under Advanced - Encryption and credentials.
+
Max AES key size: %1$s
Add actions to the Android power menu