diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java index 2fde09b70..5d5916211 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/provider/KeychainProvider.java @@ -780,12 +780,12 @@ public class KeychainProvider extends ContentProvider { break; } case UPDATED_KEYS: { + keyId = values.getAsLong(UpdatedKeys.MASTER_KEY_ID); try { db.insertOrThrow(Tables.UPDATED_KEYS, null, values); } catch (SQLiteConstraintException e) { - String masterKeyId = values.getAsString(UpdatedKeys.MASTER_KEY_ID); db.update(Tables.UPDATED_KEYS, values, - UpdatedKeys.MASTER_KEY_ID + " = ?", new String[] { masterKeyId }); + UpdatedKeys.MASTER_KEY_ID + " = ?", new String[] { Long.toString(keyId) }); } rowUri = UpdatedKeys.CONTENT_URI; break; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/loader/KeyserverStatusLoader.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/loader/KeyserverStatusLoader.java index 8cd59f934..cb6bd71ba 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/loader/KeyserverStatusLoader.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/keyview/loader/KeyserverStatusLoader.java @@ -27,6 +27,7 @@ import android.support.v4.content.AsyncTaskLoader; import android.util.Log; import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings; import org.sufficientlysecure.keychain.provider.KeychainContract.UpdatedKeys; import org.sufficientlysecure.keychain.ui.keyview.loader.KeyserverStatusLoader.KeyserverStatus; @@ -45,12 +46,15 @@ public class KeyserverStatusLoader extends AsyncTaskLoader { private KeyserverStatus cachedResult; + private ForceLoadContentObserver keyserverStatusObserver; public KeyserverStatusLoader(Context context, ContentResolver contentResolver, long masterKeyId) { super(context); this.contentResolver = contentResolver; this.masterKeyId = masterKeyId; + + this.keyserverStatusObserver = new ForceLoadContentObserver(); } @Override @@ -95,6 +99,16 @@ public class KeyserverStatusLoader extends AsyncTaskLoader { if (takeContentChanged() || cachedResult == null) { forceLoad(); } + + getContext().getContentResolver().registerContentObserver( + KeyRings.buildGenericKeyRingUri(masterKeyId), true, keyserverStatusObserver); + } + + @Override + protected void onAbandon() { + super.onAbandon(); + + getContext().getContentResolver().unregisterContentObserver(keyserverStatusObserver); } public static class KeyserverStatus {