diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/ViewKeyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/ViewKeyActivity.java
index 44dc5012c..640dba3e3 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/ViewKeyActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/ViewKeyActivity.java
@@ -106,6 +106,7 @@ import org.sufficientlysecure.keychain.ui.util.Notify.Style;
import org.sufficientlysecure.keychain.ui.util.QrCodeUtils;
import org.sufficientlysecure.keychain.util.ContactHelper;
import org.sufficientlysecure.keychain.util.Preferences;
+import org.sufficientlysecure.keychain.util.ShareKeyHelper;
import timber.log.Timber;
@@ -139,6 +140,8 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
private ImageButton actionEncryptFile;
private ImageButton actionEncryptText;
+ private ImageButton actionShare;
+ private ImageButton actionShareClipboard;
private FloatingActionButton floatingActionButton;
private ImageView photoView;
private FrameLayout photoLayout;
@@ -177,6 +180,8 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
actionEncryptFile = findViewById(R.id.view_key_action_encrypt_files);
actionEncryptText = findViewById(R.id.view_key_action_encrypt_text);
+ actionShare= findViewById(R.id.view_key_action_share);
+ actionShareClipboard = findViewById(R.id.view_key_action_share_clipboard);
floatingActionButton = findViewById(R.id.fab);
photoView = findViewById(R.id.view_key_photo);
photoLayout = findViewById(R.id.view_key_photo_layout);
@@ -189,6 +194,8 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
ContentDescriptionHint.setup(actionEncryptFile);
ContentDescriptionHint.setup(actionEncryptText);
+ ContentDescriptionHint.setup(actionShare);
+ ContentDescriptionHint.setup(actionShareClipboard);
ContentDescriptionHint.setup(floatingActionButton);
@@ -256,6 +263,8 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
actionEncryptFile.setOnClickListener(v -> encrypt(false));
actionEncryptText.setOnClickListener(v -> encrypt(true));
+ actionShare.setOnClickListener(v -> ShareKeyHelper.shareKey(this, unifiedKeyInfo));
+ actionShareClipboard.setOnClickListener(v -> ShareKeyHelper.shareKeyToClipboard(this, unifiedKeyInfo));
floatingActionButton.setOnClickListener(v -> {
if (unifiedKeyInfo.has_any_secret()) {
@@ -798,12 +807,16 @@ public class ViewKeyActivity extends BaseSecurityTokenActivity implements
actionEncryptFile.setVisibility(View.VISIBLE);
actionEncryptText.setVisibility(View.VISIBLE);
+ actionShare.setVisibility(View.VISIBLE);
+ actionShareClipboard.setVisibility(View.VISIBLE);
showFab();
floatingActionButton.setImageDrawable(ContextCompat.getDrawable(this, R.drawable.ic_repeat_white_24dp));
} else {
actionEncryptFile.setVisibility(View.VISIBLE);
actionEncryptText.setVisibility(View.VISIBLE);
+ actionShare.setVisibility(View.VISIBLE);
+ actionShareClipboard.setVisibility(View.VISIBLE);
qrCodeLayout.setVisibility(View.GONE);
if (unifiedKeyInfo.is_verified()) {
diff --git a/OpenKeychain/src/main/res/layout/view_key_activity.xml b/OpenKeychain/src/main/res/layout/view_key_activity.xml
index ba44eaecf..62f34b366 100644
--- a/OpenKeychain/src/main/res/layout/view_key_activity.xml
+++ b/OpenKeychain/src/main/res/layout/view_key_activity.xml
@@ -111,6 +111,26 @@
android:src="@drawable/ic_action_encrypt_text_24dp"
android:visibility="invisible"
tools:visibility="visible" />
+
+
+
+
Subkey will be stripped
Expiry will change to never
Expiry will change to %s
+ Share key via clipboard
+ Share key