Merge branch 'package-broadcasts' into 'master'

Package broadcasts (fixes #19)
This commit is contained in:
Peter Serwylo 2014-04-30 20:05:04 +00:00
commit 3bca6d3f70
5 changed files with 34 additions and 4 deletions

View File

@ -291,7 +291,7 @@
</receiver>
<receiver android:name=".PackageUpgradedReceiver" >
<intent-filter>
<action android:name="android.intent.action.PACKAGE_CHANGED" />
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" />
</intent-filter>

View File

@ -20,6 +20,7 @@ package org.fdroid.fdroid;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.net.Uri;
import android.util.Log;
@ -27,6 +28,15 @@ import org.fdroid.fdroid.data.InstalledAppProvider;
public class PackageAddedReceiver extends PackageReceiver {
@Override
protected boolean toDiscard(Intent intent) {
if (intent.hasExtra(Intent.EXTRA_REPLACING)) {
Log.d("FDroid", "Discarding since this PACKAGE_ADDED is just a PACKAGE_REPLACED");
return true;
}
return false;
}
@Override
protected void handle(Context context, String appId) {
PackageInfo info = getPackageInfo(context, appId);
@ -41,4 +51,4 @@ public class PackageAddedReceiver extends PackageReceiver {
context.getContentResolver().insert(uri, values);
}
}
}

View File

@ -29,6 +29,7 @@ import org.fdroid.fdroid.data.AppProvider;
abstract class PackageReceiver extends BroadcastReceiver {
abstract protected boolean toDiscard(Intent intent);
abstract protected void handle(Context context, String appId);
protected PackageInfo getPackageInfo(Context context, String appId) {
@ -43,6 +44,9 @@ abstract class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("FDroid", "PackageReceiver received [action = '" + intent.getAction() + "', data = '" + intent.getData() + "']");
if (toDiscard(intent)) {
return;
}
String appId = intent.getData().getSchemeSpecificPart();
handle(context, appId);
context.getContentResolver().notifyChange(AppProvider.getContentUri(appId), null);

View File

@ -19,6 +19,7 @@
package org.fdroid.fdroid;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import org.fdroid.fdroid.data.AppProvider;
@ -26,6 +27,15 @@ import org.fdroid.fdroid.data.InstalledAppProvider;
public class PackageRemovedReceiver extends PackageReceiver {
@Override
protected boolean toDiscard(Intent intent) {
if (intent.hasExtra(Intent.EXTRA_REPLACING)) {
Log.d("FDroid", "Discarding since this PACKAGE_REMOVED is just a PACKAGE_REPLACED");
return true;
}
return false;
}
@Override
protected void handle(Context context, String appId) {
@ -35,4 +45,4 @@ public class PackageRemovedReceiver extends PackageReceiver {
context.getContentResolver().delete(uri, null, null);
}
}
}

View File

@ -20,6 +20,7 @@ package org.fdroid.fdroid;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.net.Uri;
import android.util.Log;
@ -33,6 +34,11 @@ import org.fdroid.fdroid.data.InstalledAppProvider;
*/
public class PackageUpgradedReceiver extends PackageReceiver {
@Override
protected boolean toDiscard(Intent intent) {
return false;
}
@Override
protected void handle(Context context, String appId) {
PackageInfo info = getPackageInfo(context, appId);
@ -47,4 +53,4 @@ public class PackageUpgradedReceiver extends PackageReceiver {
context.getContentResolver().insert(uri, values);
}
}
}