summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java33
1 files changed, 33 insertions, 0 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
index bf750467d991..ce916cba312a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
+++ b/packages/SettingsLib/src/com/android/settingslib/drawer/SettingsDrawerActivity.java
@@ -20,14 +20,17 @@ import android.annotation.Nullable;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.pm.PackageManager;
import android.content.res.TypedArray;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.widget.DrawerLayout;
+import android.util.ArraySet;
import android.util.Log;
import android.util.Pair;
import android.view.Gravity;
@@ -56,6 +59,9 @@ public class SettingsDrawerActivity extends Activity {
private static List<DashboardCategory> sDashboardCategories;
private static HashMap<Pair<String, String>, Tile> sTileCache;
+ // Serves as a temporary list of tiles to ignore until we heard back from the PM that they
+ // are disabled.
+ private static ArraySet<ComponentName> sTileBlacklist = new ArraySet<>();
private static InterestingConfigChanges sConfigTracker;
private final PackageReceiver mPackageReceiver = new PackageReceiver();
@@ -270,6 +276,24 @@ public class SettingsDrawerActivity extends Activity {
finish();
}
+ public void setTileEnabled(ComponentName component, boolean enabled) {
+ PackageManager pm = getPackageManager();
+ int state = pm.getComponentEnabledSetting(component);
+ boolean isEnabled = state == PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
+ if (isEnabled != enabled || state == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT) {
+ if (enabled) {
+ sTileBlacklist.remove(component);
+ } else {
+ sTileBlacklist.add(component);
+ }
+ pm.setComponentEnabledSetting(component, enabled
+ ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED
+ : PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+ PackageManager.DONT_KILL_APP);
+ new CategoriesUpdater().execute();
+ }
+ }
+
public interface CategoryListener {
void onCategoriesChanged();
}
@@ -285,6 +309,15 @@ public class SettingsDrawerActivity extends Activity {
@Override
protected void onPostExecute(List<DashboardCategory> dashboardCategories) {
+ for (int i = 0; i < dashboardCategories.size(); i++) {
+ DashboardCategory category = dashboardCategories.get(i);
+ for (int j = 0; j < category.tiles.size(); j++) {
+ Tile tile = category.tiles.get(j);
+ if (sTileBlacklist.contains(tile.intent.getComponent())) {
+ category.tiles.remove(j--);
+ }
+ }
+ }
sDashboardCategories = dashboardCategories;
onCategoriesChanged();
}