Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d21f7e9 authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Update SyncManager to use PackageMonitor instead of broadcasts.

Bug: 315046091
Test: manual
Change-Id: I0aa2a2ae91512d9442319dcb79902adca20f5ea2
parent 2230d0d4
Loading
Loading
Loading
Loading
+19 −15
Original line number Diff line number Diff line
@@ -105,6 +105,7 @@ import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.app.IBatteryStats;
import com.android.internal.config.appcloning.AppCloningDeviceConfigHelper;
import com.android.internal.content.PackageMonitor;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
import com.android.internal.notification.SystemNotificationChannels;
import com.android.internal.os.BackgroundThread;
@@ -438,19 +439,23 @@ public class SyncManager {
        }
    };

    private final BroadcastReceiver mForceStoppedReceiver = new BroadcastReceiver() {
    private class PackageMonitorImpl extends PackageMonitor {
        @Override
        public void onReceive(Context context, Intent intent) {
        public boolean onHandleForceStop(Intent intent, String[] packageNames, int uid,
                boolean doit, Bundle extras) {
            final boolean isLoggable = Log.isLoggable(TAG, Log.DEBUG);
            // For now, just log when packages were force-stopped and unstopped for debugging.
            if (isLoggable) {
                if (Intent.ACTION_PACKAGE_RESTARTED.equals(intent.getAction())) {
                    Log.d(TAG, "Package force-stopped: "
                            + intent.getData().getSchemeSpecificPart());
                } else if (Intent.ACTION_PACKAGE_UNSTOPPED.equals(intent.getAction())) {
                    Log.d(TAG, "Package unstopped: "
                            + intent.getData().getSchemeSpecificPart());
                Log.d(TAG, "Package force-stopped: " + Arrays.toString(packageNames)
                        + ", uid: " + uid);
            }
            return false;
        }

        @Override
        public void onPackageUnstopped(String packageName, int uid, Bundle extras) {
            final boolean isLoggable = Log.isLoggable(TAG, Log.DEBUG);
            if (isLoggable) {
                Log.d(TAG, "Package unstopped: " + packageName + ", uid: " + uid);
            }
        }
    };
@@ -718,11 +723,10 @@ public class SyncManager {
        mContext.registerReceiverAsUser(
                mUserIntentReceiver, UserHandle.ALL, intentFilter, null, null);

        intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_PACKAGE_RESTARTED);
        intentFilter.addAction(Intent.ACTION_PACKAGE_UNSTOPPED);
        intentFilter.addDataScheme("package");
        context.registerReceiver(mForceStoppedReceiver, intentFilter);

        final PackageMonitor packageMonitor = new PackageMonitorImpl();
        packageMonitor.register(mContext, null /* thread */, UserHandle.ALL,
                false /* externalStorage */);

        intentFilter = new IntentFilter(Intent.ACTION_TIME_CHANGED);
        context.registerReceiver(mOtherIntentsReceiver, intentFilter);