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

Commit 0e928ee9 authored by Jeff Sharkey's avatar Jeff Sharkey Committed by android-build-merger
Browse files

Check if anyone could possibly provide service.

am: f6e9b951

Change-Id: I979716e66e6b5ca068e4a0de3cf2432cbbf25c37
parents 6569c05f f6e9b951
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -141,8 +141,12 @@ public class ServiceWatcher implements ServiceConnection {
     * <p>
     * Note that if there are no matching encryption-aware services, we may not
     * bind to a real service until after the current user is unlocked.
     *
     * @returns {@code true} if a potential service implementation was found.
     */
    public boolean start() {
        if (isServiceMissing()) return false;

        synchronized (mLock) {
            bindBestPackageLocked(mServicePackageName, false);
        }
@@ -173,6 +177,17 @@ public class ServiceWatcher implements ServiceConnection {
        return true;
    }

    /**
     * Check if any instance of this service is present on the device,
     * regardless of it being encryption-aware or not.
     */
    private boolean isServiceMissing() {
        final Intent intent = new Intent(mAction);
        final int flags = PackageManager.MATCH_DIRECT_BOOT_AWARE
                | PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
        return mPm.queryIntentServicesAsUser(intent, flags, mCurrentUserId).isEmpty();
    }

    /**
     * Searches and binds to the best package, or do nothing if the best package
     * is already bound, unless force rebinding is requested.
@@ -181,7 +196,7 @@ public class ServiceWatcher implements ServiceConnection {
     *            packages if it is {@code null}.
     * @param forceRebind Force a rebinding to the best package if it's already
     *            bound.
     * @return {@code true} if a valid package was found to bind to.
     * @returns {@code true} if a valid package was found to bind to.
     */
    private boolean bindBestPackageLocked(String justCheckThisPackage, boolean forceRebind) {
        Intent intent = new Intent(mAction);