diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java index 70b29141e..7ec395010 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/Constants.java @@ -74,6 +74,9 @@ public final class Constants { // used by QR Codes (Guardian Project, Monkeysphere compatibility) public static final String FINGERPRINT_SCHEME = "openpgp4fpr"; + // used by openpgp-skt + public static final String TRANSFER_SCHEME = "pgp+transfer"; + public static final String BOUNCY_CASTLE_PROVIDER_NAME = BouncyCastleProvider.PROVIDER_NAME; // prefix packagename for exported Intents diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java index b7260d34f..4313c05cd 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysProxyActivity.java @@ -40,6 +40,7 @@ import org.sufficientlysecure.keychain.operations.results.OperationResult.LogTyp import org.sufficientlysecure.keychain.operations.results.SingletonResult; import org.sufficientlysecure.keychain.service.ImportKeyringParcel; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper; +import org.sufficientlysecure.keychain.ui.transfer.view.TransferFragment; import org.sufficientlysecure.keychain.ui.util.KeyFormattingUtils; import org.sufficientlysecure.keychain.util.IntentIntegratorSupportV4; import org.sufficientlysecure.keychain.util.Log; @@ -143,6 +144,17 @@ public class ImportKeysProxyActivity extends FragmentActivity Log.d(Constants.TAG, "scanned: " + uri); + // example: pgp+transfer: + if (uri != null && uri.getScheme() != null && uri.getScheme().equalsIgnoreCase(Constants.TRANSFER_SCHEME)) { + Intent intent = new Intent(this, MainActivity.class); + intent.putExtra(MainActivity.EXTRA_INIT_FRAG, MainActivity.ID_TRANSFER); + intent.putExtra(TransferFragment.EXTRA_OPENPGP_SKT_INFO, uri); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + finish(); + return; + } + // example: openpgp4fpr:73EE2314F65FA92EC2390D3A718C070100012282 if (uri == null || uri.getScheme() == null || !uri.getScheme().toLowerCase(Locale.ENGLISH).equals(Constants.FINGERPRINT_SCHEME)) { @@ -153,6 +165,7 @@ public class ImportKeysProxyActivity extends FragmentActivity returnResult(intent); return; } + final String fingerprintHex = uri.getEncodedSchemeSpecificPart().toLowerCase(Locale.ENGLISH); if (!fingerprintHex.matches("[a-fA-F0-9]{40}")) { SingletonResult result = new SingletonResult( diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java index 840f29bae..b77390e6e 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java @@ -173,11 +173,35 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai case ID_APPS: onAppsSelected(); break; + case ID_TRANSFER: + onTransferSelected(); + break; } } } + @Override + public void onNewIntent(Intent data) { + super.onNewIntent(data); + + setIntent(data); + if (data != null && data.hasExtra(EXTRA_INIT_FRAG)) { + // initialize FragmentLayout with KeyListFragment at first + switch (data.getIntExtra(EXTRA_INIT_FRAG, -1)) { + case ID_ENCRYPT_DECRYPT: + onEnDecryptSelected(); + break; + case ID_APPS: + onAppsSelected(); + break; + case ID_TRANSFER: + onTransferSelected(); + break; + } + } + } + private void setFragment(Fragment fragment, boolean addToBackStack) { FragmentManager fragmentManager = getSupportFragmentManager(); fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/presenter/TransferPresenter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/presenter/TransferPresenter.java index da5ba484a..587ded895 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/presenter/TransferPresenter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/presenter/TransferPresenter.java @@ -100,6 +100,10 @@ public class TransferPresenter implements KeyTransferCallback, LoaderCallbacksgetParcelableExtra(EXTRA_OPENPGP_SKT_INFO)); + } + } + @Override public void onStart() { super.onStart();