aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableCache.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableCache.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableCache.java22
1 files changed, 21 insertions, 1 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableCache.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableCache.java
index 4d723cb30..54c984190 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableCache.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/util/ParcelableCache.java
@@ -17,6 +17,8 @@
package org.sufficientlysecure.keychain.util;
+import android.content.Intent;
+import android.os.Bundle;
import android.os.Parcel;
import java.util.UUID;
@@ -75,6 +77,17 @@ public class ParcelableCache<E extends Object> {
}
}
+ public E readFromIntentAndGetFromCache(Intent data, String key1, String key2) {
+ if (!data.getExtras().containsKey(key1) || !data.getExtras().containsKey(key2)) {
+ return null;
+ }
+ long mostSig = data.getLongExtra(key1, 0);
+ long leastSig = data.getLongExtra(key2, 0);
+ UUID mTicket = new UUID(mostSig, leastSig);
+ // fetch the dehydrated log out of storage (this removes it from the dehydration pool)
+ return rehydrateParcelable(mTicket);
+ }
+
public E readFromParcelAndGetFromCache(Parcel source) {
long mostSig = source.readLong();
long leastSig = source.readLong();
@@ -83,7 +96,6 @@ public class ParcelableCache<E extends Object> {
return rehydrateParcelable(mTicket);
}
-
public void cacheAndWriteToParcel(E parcelable, Parcel dest) {
// Get a ticket for our log.
UUID mTicket = dehydrateParcelable(parcelable);
@@ -92,4 +104,12 @@ public class ParcelableCache<E extends Object> {
dest.writeLong(mTicket.getLeastSignificantBits());
}
+ public void cacheAndWriteToIntent(E parcelable, Intent data, String key1, String key2) {
+ // Get a ticket for our log.
+ UUID mTicket = dehydrateParcelable(parcelable);
+ // And write out the UUID most and least significant bits.
+ data.putExtra(key1, mTicket.getMostSignificantBits());
+ data.putExtra(key2, mTicket.getLeastSignificantBits());
+ }
+
}