Merge "Check if anyone could possibly provide service." into nyc-mr1-dev
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user