Merge branch 'package-broadcasts' into 'master'
Package broadcasts (fixes #19)
This commit is contained in:
commit
3bca6d3f70
@ -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>
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user