diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 00bd7189bb..da295e776b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -3377,7 +3377,7 @@ public class FragmentCompose extends FragmentBase { // Encryption if (ref.ui_encrypt != null && !EntityMessage.ENCRYPT_NONE.equals(ref.ui_encrypt)) { - if (ActivityBilling.isPro(context)) + if (ActivityBilling.isPro(context) && Helper.isOpenKeychainInstalled(context)) data.draft.ui_encrypt = ref.ui_encrypt; } diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 12df6fb617..bf13ac69b1 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -92,6 +92,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.bottomnavigation.BottomNavigationView; import org.jetbrains.annotations.NotNull; +import org.openintents.openpgp.util.OpenPgpApi; import java.io.ByteArrayOutputStream; import java.io.File; @@ -408,6 +409,18 @@ public class Helper { return (biometrics || !TextUtils.isEmpty(pin)); } + static boolean isOpenKeychainInstalled(Context context) { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + String provider = prefs.getString("openpgp_provider", "org.sufficientlysecure.keychain"); + + PackageManager pm = context.getPackageManager(); + Intent intent = new Intent(OpenPgpApi.SERVICE_INTENT_2); + intent.setPackage(provider); + List ris = pm.queryIntentServices(intent, 0); + + return (ris.size() > 0); + } + // View static Intent getChooser(Context context, Intent intent) {