Generic share of keyring via Android Intent SEND, renaming of own share intents

This commit is contained in:
Dominik Schürmann
2013-01-08 22:12:23 +01:00
parent 049dc908f8
commit d515b26796
8 changed files with 62 additions and 32 deletions

View File

@@ -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;

View File

@@ -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);

View File

@@ -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));
}
}
}

View File

@@ -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