Merge "Retrieve direct boot aware activities." into rvc-dev am: dc539b6561
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11881554 Change-Id: If3d121869c1a390e4b8f19f11f08bf8c976c11dc
This commit is contained in:
@@ -93,7 +93,6 @@ import android.os.SystemClock;
|
||||
import android.os.UserHandle;
|
||||
import android.provider.Settings.Global;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.ArrayMap;
|
||||
import android.util.ArraySet;
|
||||
import android.util.KeyValueListParser;
|
||||
import android.util.Slog;
|
||||
@@ -205,6 +204,10 @@ public class AppStandbyController implements AppStandbyInternal {
|
||||
*/
|
||||
private static final long WAIT_FOR_ADMIN_DATA_TIMEOUT_MS = 10_000;
|
||||
|
||||
private static final int HEADLESS_APP_CHECK_FLAGS =
|
||||
PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
|
||||
| PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS;
|
||||
|
||||
// To name the lock for stack traces
|
||||
static class Lock {}
|
||||
|
||||
@@ -234,7 +237,7 @@ public class AppStandbyController implements AppStandbyInternal {
|
||||
* disabled). Presence in this map indicates that the app is a headless system app.
|
||||
*/
|
||||
@GuardedBy("mHeadlessSystemApps")
|
||||
private final ArrayMap<String, Boolean> mHeadlessSystemApps = new ArrayMap<>();
|
||||
private final ArraySet<String> mHeadlessSystemApps = new ArraySet<>();
|
||||
|
||||
private final CountDownLatch mAdminDataAvailableLatch = new CountDownLatch(1);
|
||||
|
||||
@@ -1123,7 +1126,7 @@ public class AppStandbyController implements AppStandbyInternal {
|
||||
|
||||
private boolean isHeadlessSystemApp(String packageName) {
|
||||
synchronized (mHeadlessSystemApps) {
|
||||
return mHeadlessSystemApps.containsKey(packageName);
|
||||
return mHeadlessSystemApps.contains(packageName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1695,9 +1698,8 @@ public class AppStandbyController implements AppStandbyInternal {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
PackageInfo pi = mPackageManager.getPackageInfoAsUser(packageName,
|
||||
PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
|
||||
userId);
|
||||
PackageInfo pi = mPackageManager.getPackageInfoAsUser(
|
||||
packageName, HEADLESS_APP_CHECK_FLAGS, userId);
|
||||
evaluateSystemAppException(pi);
|
||||
} catch (PackageManager.NameNotFoundException e) {
|
||||
synchronized (mHeadlessSystemApps) {
|
||||
@@ -1709,15 +1711,16 @@ public class AppStandbyController implements AppStandbyInternal {
|
||||
/** Returns true if the exception status changed. */
|
||||
private boolean evaluateSystemAppException(@Nullable PackageInfo pkgInfo) {
|
||||
if (pkgInfo == null || pkgInfo.applicationInfo == null
|
||||
|| !pkgInfo.applicationInfo.isSystemApp()) {
|
||||
|| (!pkgInfo.applicationInfo.isSystemApp()
|
||||
&& !pkgInfo.applicationInfo.isUpdatedSystemApp())) {
|
||||
return false;
|
||||
}
|
||||
synchronized (mHeadlessSystemApps) {
|
||||
if (pkgInfo.activities == null || pkgInfo.activities.length == 0) {
|
||||
// Headless system app.
|
||||
return mHeadlessSystemApps.put(pkgInfo.packageName, true) == null;
|
||||
return mHeadlessSystemApps.add(pkgInfo.packageName);
|
||||
} else {
|
||||
return mHeadlessSystemApps.remove(pkgInfo.packageName) != null;
|
||||
return mHeadlessSystemApps.remove(pkgInfo.packageName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1758,8 +1761,7 @@ public class AppStandbyController implements AppStandbyInternal {
|
||||
private void loadHeadlessSystemAppCache() {
|
||||
Slog.d(TAG, "Loading headless system app cache. appIdleEnabled=" + mAppIdleEnabled);
|
||||
final List<PackageInfo> packages = mPackageManager.getInstalledPackagesAsUser(
|
||||
PackageManager.GET_ACTIVITIES | PackageManager.MATCH_DISABLED_COMPONENTS,
|
||||
UserHandle.USER_SYSTEM);
|
||||
HEADLESS_APP_CHECK_FLAGS, UserHandle.USER_SYSTEM);
|
||||
final int packageCount = packages.size();
|
||||
for (int i = 0; i < packageCount; i++) {
|
||||
PackageInfo pkgInfo = packages.get(i);
|
||||
@@ -1868,7 +1870,7 @@ public class AppStandbyController implements AppStandbyInternal {
|
||||
synchronized (mHeadlessSystemApps) {
|
||||
for (int i = mHeadlessSystemApps.size() - 1; i >= 0; --i) {
|
||||
pw.print(" ");
|
||||
pw.print(mHeadlessSystemApps.keyAt(i));
|
||||
pw.print(mHeadlessSystemApps.valueAt(i));
|
||||
pw.println(",");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user