aboutsummaryrefslogtreecommitdiffstats
path: root/cm/lib/main/java/org/cyanogenmod/platform/internal/CMSystemServer.java
diff options
context:
space:
mode:
Diffstat (limited to 'cm/lib/main/java/org/cyanogenmod/platform/internal/CMSystemServer.java')
-rw-r--r--cm/lib/main/java/org/cyanogenmod/platform/internal/CMSystemServer.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMSystemServer.java b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMSystemServer.java
index 0e0b9b5..aa82428 100644
--- a/cm/lib/main/java/org/cyanogenmod/platform/internal/CMSystemServer.java
+++ b/cm/lib/main/java/org/cyanogenmod/platform/internal/CMSystemServer.java
@@ -17,6 +17,7 @@
package org.cyanogenmod.platform.internal;
import android.content.Context;
+import android.os.SystemProperties;
import android.util.Slog;
import com.android.server.LocalServices;
import com.android.server.SystemServiceManager;
@@ -33,11 +34,21 @@ public class CMSystemServer {
private Context mSystemContext;
private CMSystemServiceHelper mSystemServiceHelper;
+ private static final String ENCRYPTING_STATE = "trigger_restart_min_framework";
+ private static final String ENCRYPTED_STATE = "1";
+
public CMSystemServer(Context systemContext) {
mSystemContext = systemContext;
mSystemServiceHelper = new CMSystemServiceHelper(mSystemContext);
}
+ public static boolean coreAppsOnly() {
+ // Only run "core" apps+services if we're encrypting the device.
+ final String cryptState = SystemProperties.get("vold.decrypt");
+ return ENCRYPTING_STATE.equals(cryptState) ||
+ ENCRYPTED_STATE.equals(cryptState);
+ }
+
/**
* Invoked via reflection by the SystemServer
*/
@@ -64,8 +75,13 @@ public class CMSystemServer {
CMSystemService cmSystemService = mSystemServiceHelper.getServiceFor(service);
if (context.getPackageManager().hasSystemFeature(
cmSystemService.getFeatureDeclaration())) {
- Slog.i(TAG, "Starting service " + service);
- ssm.startService(cmSystemService.getClass());
+ if (coreAppsOnly() && !cmSystemService.isCoreService()) {
+ Slog.d(TAG, "Not starting " + service +
+ " - only parsing core apps");
+ } else {
+ Slog.i(TAG, "Starting service " + service);
+ ssm.startService(cmSystemService.getClass());
+ }
} else {
Slog.i(TAG, "Not starting service " + service +
" due to feature not declared on device");