aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2013-01-08 22:12:23 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2013-01-08 22:12:23 +0100
commitd515b267964fd5398da8338414acbaebe8edcb21 (patch)
tree4626bb22d22758df25b268e1dea21e3facba33b9
parent049dc908f8cc00b153e80a975c28325e8b4174ba (diff)
downloadopen-keychain-d515b267964fd5398da8338414acbaebe8edcb21.tar.gz
open-keychain-d515b267964fd5398da8338414acbaebe8edcb21.tar.bz2
open-keychain-d515b267964fd5398da8338414acbaebe8edcb21.zip
Generic share of keyring via Android Intent SEND, renaming of own share intents
-rw-r--r--APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java11
-rw-r--r--APG/AndroidManifest.xml7
-rw-r--r--APG/res/values/strings.xml4
-rw-r--r--APG/src/org/thialfihar/android/apg/Id.java7
-rw-r--r--APG/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java24
-rw-r--r--APG/src/org/thialfihar/android/apg/ui/ShareActivity.java (renamed from APG/src/org/thialfihar/android/apg/ui/ShareQrCodeActivity.java)31
-rw-r--r--APG/src/org/thialfihar/android/apg/ui/ShareNfcBeamActivity.java5
-rw-r--r--README.md5
8 files changed, 62 insertions, 32 deletions
diff --git a/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java b/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java
index 1362412fb..d6cdc60ab 100644
--- a/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java
+++ b/APG-API-Lib/src/org/thialfihar/android/apg/integration/ApgIntentHelper.java
@@ -81,8 +81,11 @@ public class ApgIntentHelper {
/**
* Share actions
*/
- public static final String ACTION_SHARE_WITH_QR_CODE = APG_INTENT_PREFIX + "SHARE_WITH_QR_CODE";
- public static final String ACTION_SHARE_WITH_NFC = APG_INTENT_PREFIX + "SHARE_WITH_NFC";
+ public static final String ACTION_SHARE_KEYRING = APG_INTENT_PREFIX + "SHARE_KEYRING";
+ public static final String ACTION_SHARE_KEYRING_WITH_QR_CODE = APG_INTENT_PREFIX
+ + "SHARE_KEYRING_WITH_QR_CODE";
+ public static final String ACTION_SHARE_KEYRING_WITH_NFC = APG_INTENT_PREFIX
+ + "SHARE_KEYRING_WITH_NFC";
// used by SHARE_WITH_QR_CODE and SHARE_WITH_NFC
public static final String EXTRA_MASTER_KEY_ID = "masterKeyId";
@@ -168,7 +171,7 @@ public class ApgIntentHelper {
* @return true when activity was found and executed successfully
*/
public boolean shareWithQrCode(long masterKeyId) {
- Intent intent = new Intent(ACTION_SHARE_WITH_QR_CODE);
+ Intent intent = new Intent(ACTION_SHARE_KEYRING_WITH_QR_CODE);
intent.putExtra(EXTRA_INTENT_VERSION, INTENT_VERSION);
intent.putExtra(EXTRA_MASTER_KEY_ID, masterKeyId);
try {
@@ -186,7 +189,7 @@ public class ApgIntentHelper {
* @return true when activity was found and executed successfully
*/
public boolean shareWithNfc(long masterKeyId) {
- Intent intent = new Intent(ACTION_SHARE_WITH_NFC);
+ Intent intent = new Intent(ACTION_SHARE_KEYRING_WITH_NFC);
intent.putExtra(EXTRA_INTENT_VERSION, INTENT_VERSION);
intent.putExtra(EXTRA_MASTER_KEY_ID, masterKeyId);
try {
diff --git a/APG/AndroidManifest.xml b/APG/AndroidManifest.xml
index 6a31333fd..c29626ccf 100644
--- a/APG/AndroidManifest.xml
+++ b/APG/AndroidManifest.xml
@@ -364,7 +364,7 @@
android:launchMode="singleTop"
android:uiOptions="splitActionBarWhenNarrow" >
<intent-filter>
- <action android:name="org.thialfihar.android.apg.intent.SHARE_WITH_NFC" />
+ <action android:name="org.thialfihar.android.apg.intent.SHARE_KEYRING_WITH_NFC" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
@@ -378,9 +378,10 @@
<data android:mimeType="application/org.thialfihar.android.apg" />
</intent-filter>
</activity>
- <activity android:name="org.thialfihar.android.apg.ui.ShareQrCodeActivity" >
+ <activity android:name="org.thialfihar.android.apg.ui.ShareActivity" >
<intent-filter>
- <action android:name="org.thialfihar.android.apg.intent.SHARE_WITH_QR_CODE" />
+ <action android:name="org.thialfihar.android.apg.intent.SHARE_KEYRING" />
+ <action android:name="org.thialfihar.android.apg.intent.SHARE_KEYRING_WITH_QR_CODE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
diff --git a/APG/res/values/strings.xml b/APG/res/values/strings.xml
index 6aac04808..c7d25ad44 100644
--- a/APG/res/values/strings.xml
+++ b/APG/res/values/strings.xml
@@ -102,6 +102,7 @@
<string name="menu_keyServer">Query Key Server</string>
<string name="menu_updateKey">Update from Server</string>
<string name="menu_exportKeyToServer">Export To Server</string>
+ <string name="menu_share">Share with…</string>
<string name="menu_shareQrCode">Share with QR Code</string>
<string name="menu_shareNfc">Share with NFC</string>
<string name="menu_scanQRCode">Scan QR Code</string>
@@ -156,7 +157,7 @@
<string name="nKeyServers">%s key server(s)</string>
<string name="fingerprint">Fingerprint:</string>
<string name="secretKeyring">Secret Keyring:</string>
-
+
<!-- choice_lowerCase: capitalized first word, no punctuation -->
<string name="choice_none">None</string>
<string name="choice_signOnly">Sign only</string>
@@ -321,6 +322,7 @@
<string name="hint_publicKeys">Search Public Keyrings</string>
<string name="hint_secretKeys">Search Secret Keyrings</string>
<string name="filterInfo">Filter: \"%s\"</string>
+ <string name="shareKeyringWith">Share keyring with…</string>
<!-- misc -->
<string name="fast">fast</string>
diff --git a/APG/src/org/thialfihar/android/apg/Id.java b/APG/src/org/thialfihar/android/apg/Id.java
index d25bb24b0..db283da37 100644
--- a/APG/src/org/thialfihar/android/apg/Id.java
+++ b/APG/src/org/thialfihar/android/apg/Id.java
@@ -35,9 +35,10 @@ public final class Id {
public static final int edit = 0x21070003;
public static final int update = 0x21070004;
public static final int exportToServer = 0x21070005;
- public static final int share_qr_code = 0x21070006;
- public static final int share_nfc = 0x21070007;
- public static final int signKey = 0x21070008;
+ public static final int share = 0x21070006;
+ public static final int share_qr_code = 0x21070007;
+ public static final int share_nfc = 0x21070008;
+ public static final int signKey = 0x21070009;
public static final class option {
public static final int new_pass_phrase = 0x21070001;
diff --git a/APG/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java b/APG/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java
index 06bf7e7d9..7c23e6217 100644
--- a/APG/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java
+++ b/APG/src/org/thialfihar/android/apg/ui/KeyListPublicFragment.java
@@ -76,8 +76,9 @@ public class KeyListPublicFragment extends KeyListFragment implements
menu.add(0, Id.menu.update, 1, R.string.menu_updateKey);
menu.add(0, Id.menu.signKey, 2, R.string.menu_signKey);
menu.add(0, Id.menu.exportToServer, 3, R.string.menu_exportKeyToServer);
- menu.add(0, Id.menu.share_qr_code, 6, R.string.menu_shareQrCode);
- menu.add(0, Id.menu.share_nfc, 7, R.string.menu_shareNfc);
+ menu.add(0, Id.menu.share, 6, R.string.menu_share);
+ menu.add(0, Id.menu.share_qr_code, 7, R.string.menu_shareQrCode);
+ menu.add(0, Id.menu.share_nfc, 8, R.string.menu_shareNfc);
}
@@ -142,9 +143,9 @@ public class KeyListPublicFragment extends KeyListFragment implements
// get master key id using row id
long masterKeyId = ProviderHelper.getPublicMasterKeyId(mKeyListActivity, keyRingRowId);
- Intent qrCodeIntent = new Intent(mKeyListActivity, ShareQrCodeActivity.class);
- qrCodeIntent.setAction(ShareQrCodeActivity.ACTION_SHARE_WITH_QR_CODE);
- qrCodeIntent.putExtra(ShareQrCodeActivity.EXTRA_MASTER_KEY_ID, masterKeyId);
+ Intent qrCodeIntent = new Intent(mKeyListActivity, ShareActivity.class);
+ qrCodeIntent.setAction(ShareActivity.ACTION_SHARE_KEYRING_WITH_QR_CODE);
+ qrCodeIntent.putExtra(ShareActivity.EXTRA_MASTER_KEY_ID, masterKeyId);
startActivityForResult(qrCodeIntent, 0);
return true;
@@ -154,12 +155,23 @@ public class KeyListPublicFragment extends KeyListFragment implements
long masterKeyId2 = ProviderHelper.getPublicMasterKeyId(mKeyListActivity, keyRingRowId);
Intent nfcIntent = new Intent(mKeyListActivity, ShareNfcBeamActivity.class);
- nfcIntent.setAction(ShareNfcBeamActivity.ACTION_SHARE_WITH_NFC);
+ nfcIntent.setAction(ShareNfcBeamActivity.ACTION_SHARE_KEYRING_WITH_NFC);
nfcIntent.putExtra(ShareNfcBeamActivity.EXTRA_MASTER_KEY_ID, masterKeyId2);
startActivityForResult(nfcIntent, 0);
return true;
+ case Id.menu.share:
+ // get master key id using row id
+ long masterKeyId3 = ProviderHelper.getPublicMasterKeyId(mKeyListActivity, keyRingRowId);
+
+ Intent shareIntent = new Intent(mKeyListActivity, ShareActivity.class);
+ shareIntent.setAction(ShareActivity.ACTION_SHARE_KEYRING);
+ shareIntent.putExtra(ShareActivity.EXTRA_MASTER_KEY_ID, masterKeyId3);
+ startActivityForResult(shareIntent, 0);
+
+ return true;
+
default:
return super.onContextItemSelected(item);
diff --git a/APG/src/org/thialfihar/android/apg/ui/ShareQrCodeActivity.java b/APG/src/org/thialfihar/android/apg/ui/ShareActivity.java
index 7d4237b80..7fec42e47 100644
--- a/APG/src/org/thialfihar/android/apg/ui/ShareQrCodeActivity.java
+++ b/APG/src/org/thialfihar/android/apg/ui/ShareActivity.java
@@ -19,6 +19,7 @@ package org.thialfihar.android.apg.ui;
import java.util.ArrayList;
import org.thialfihar.android.apg.Constants;
+import org.thialfihar.android.apg.R;
import org.thialfihar.android.apg.provider.ProviderHelper;
import com.actionbarsherlock.app.SherlockFragmentActivity;
@@ -27,9 +28,10 @@ import com.google.zxing.integration.android.IntentIntegrator;
import android.content.Intent;
import android.os.Bundle;
-public class ShareQrCodeActivity extends SherlockFragmentActivity {
- public static final String ACTION_SHARE_WITH_QR_CODE = Constants.INTENT_PREFIX
- + "SHARE_WITH_QR_CODE";
+public class ShareActivity extends SherlockFragmentActivity {
+ public static final String ACTION_SHARE_KEYRING = Constants.INTENT_PREFIX + "SHARE_KEYRING";
+ public static final String ACTION_SHARE_KEYRING_WITH_QR_CODE = Constants.INTENT_PREFIX
+ + "SHARE_KEYRING_WITH_QR_CODE";
public static final String EXTRA_MASTER_KEY_ID = "masterKeyId";
@@ -48,18 +50,25 @@ public class ShareQrCodeActivity extends SherlockFragmentActivity {
extras = new Bundle();
}
- if (ACTION_SHARE_WITH_QR_CODE.equals(action)) {
- long masterKeyId = extras.getLong(EXTRA_MASTER_KEY_ID);
+ long masterKeyId = extras.getLong(EXTRA_MASTER_KEY_ID);
- // get public keyring as ascii armored string
- ArrayList<String> keyringArmored = ProviderHelper.getPublicKeyRingsAsArmoredString(
- this, new long[] { masterKeyId });
- // close this activity
- finish();
+ // get public keyring as ascii armored string
+ ArrayList<String> keyringArmored = ProviderHelper.getPublicKeyRingsAsArmoredString(this,
+ new long[] { masterKeyId });
+ // close this activity
+ finish();
+
+ if (ACTION_SHARE_KEYRING.equals(action)) {
+ // let user choose application
+ Intent sendIntent = new Intent(Intent.ACTION_SEND);
+ sendIntent.putExtra(Intent.EXTRA_TEXT, keyringArmored.get(0));
+ sendIntent.setType("text/plain");
+ startActivity(Intent.createChooser(sendIntent,
+ getResources().getText(R.string.shareKeyringWith)));
+ } else if (ACTION_SHARE_KEYRING_WITH_QR_CODE.equals(action)) {
// use barcode scanner integration library
new IntentIntegrator(this).shareText(keyringArmored.get(0));
}
}
-
}
diff --git a/APG/src/org/thialfihar/android/apg/ui/ShareNfcBeamActivity.java b/APG/src/org/thialfihar/android/apg/ui/ShareNfcBeamActivity.java
index bdf5f6227..abb2d6b82 100644
--- a/APG/src/org/thialfihar/android/apg/ui/ShareNfcBeamActivity.java
+++ b/APG/src/org/thialfihar/android/apg/ui/ShareNfcBeamActivity.java
@@ -54,7 +54,8 @@ import android.text.method.LinkMovementMethod;
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public class ShareNfcBeamActivity extends SherlockFragmentActivity implements
CreateNdefMessageCallback, OnNdefPushCompleteCallback {
- public static final String ACTION_SHARE_WITH_NFC = Constants.INTENT_PREFIX + "SHARE_WITH_NFC";
+ public static final String ACTION_SHARE_KEYRING_WITH_NFC = Constants.INTENT_PREFIX
+ + "SHARE_KEYRING_WITH_NFC";
public static final String EXTRA_MASTER_KEY_ID = "masterKeyId";
@@ -96,7 +97,7 @@ public class ShareNfcBeamActivity extends SherlockFragmentActivity implements
extras = new Bundle();
}
- if (ACTION_SHARE_WITH_NFC.equals(action)) {
+ if (ACTION_SHARE_KEYRING_WITH_NFC.equals(action)) {
long masterKeyId = extras.getLong(EXTRA_MASTER_KEY_ID);
// get public keyring as byte array
diff --git a/README.md b/README.md
index 07ca28f63..e87eff98f 100644
--- a/README.md
+++ b/README.md
@@ -83,8 +83,9 @@ Android primitives to exchange data: Intent, Intent with return values, Send (al
* IMPORT_FROM_FILE
* IMPORT_FROM_QR_CODE
* IMPORT_FROM_NFC
-* SHARE_WITH_QR_CODE
-* SHARE_WITH_NFC
+* SHARE_KEYRING
+* SHARE_KEYRING_WITH_QR_CODE
+* SHARE_KEYRING_WITH_NFC
* EDIT_KEY
* SELECT_PUBLIC_KEYS
* SELECT_SECRET_KEY