diff --git a/src/org/fdroid/fdroid/AppDetails.java b/src/org/fdroid/fdroid/AppDetails.java index 87c552db0..ba1ff18e4 100644 --- a/src/org/fdroid/fdroid/AppDetails.java +++ b/src/org/fdroid/fdroid/AppDetails.java @@ -909,7 +909,7 @@ public class AppDetails extends ListActivity { Uri uri = Uri.fromParts("package", pkginfo.packageName, null); Intent intent = new Intent(Intent.ACTION_DELETE, uri); startActivityForResult(intent, REQUEST_UNINSTALL); - ((FDroidApp) getApplication()).invalidateApp(id); + notifyAppChanged(id); } @@ -927,7 +927,15 @@ public class AppDetails extends ListActivity { "application/vnd.android.package-archive"); extraNotUnknownSource(intent); startActivityForResult(intent, REQUEST_INSTALL); - ((FDroidApp) getApplication()).invalidateApp(id); + notifyAppChanged(id); + } + + /** + * We could probably drop this, and let the PackageReceiver take care of notifications + * for us, but I don't think the package receiver notifications are very instantaneous. + */ + private void notifyAppChanged(String id) { + getContentResolver().notifyChange(AppProvider.getContentUri(id), null); } private void launchApk(String id) { diff --git a/src/org/fdroid/fdroid/PackageReceiver.java b/src/org/fdroid/fdroid/PackageReceiver.java index c58bf99ff..08aebc755 100644 --- a/src/org/fdroid/fdroid/PackageReceiver.java +++ b/src/org/fdroid/fdroid/PackageReceiver.java @@ -22,6 +22,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; +import org.fdroid.fdroid.data.AppProvider; public class PackageReceiver extends BroadcastReceiver { @@ -29,7 +30,7 @@ public class PackageReceiver extends BroadcastReceiver { public void onReceive(Context ctx, Intent intent) { String appid = intent.getData().getSchemeSpecificPart(); Log.d("FDroid", "PackageReceiver received "+appid); - ((FDroidApp) ctx.getApplicationContext()).invalidateApp(appid); + ctx.getContentResolver().notifyChange(AppProvider.getContentUri(appid), null); Utils.clearInstalledApksCache(); }