use of android.service.notification.ZenModeConfig in project android_frameworks_base by AOSPA.
the class ZenModeHelper method addAutomaticZenRule.
public String addAutomaticZenRule(AutomaticZenRule automaticZenRule, String reason) {
if (!isSystemRule(automaticZenRule)) {
ServiceInfo owner = getServiceInfo(automaticZenRule.getOwner());
if (owner == null) {
throw new IllegalArgumentException("Owner is not a condition provider service");
}
int ruleInstanceLimit = -1;
if (owner.metaData != null) {
ruleInstanceLimit = owner.metaData.getInt(ConditionProviderService.META_DATA_RULE_INSTANCE_LIMIT, -1);
}
if (ruleInstanceLimit > 0 && ruleInstanceLimit < (getCurrentInstanceCount(automaticZenRule.getOwner()) + 1)) {
throw new IllegalArgumentException("Rule instance limit exceeded");
}
}
ZenModeConfig newConfig;
synchronized (mConfig) {
if (mConfig == null) {
throw new AndroidRuntimeException("Could not create rule");
}
if (DEBUG) {
Log.d(TAG, "addAutomaticZenRule rule= " + automaticZenRule + " reason=" + reason);
}
newConfig = mConfig.copy();
ZenRule rule = new ZenRule();
populateZenRule(automaticZenRule, rule, true);
newConfig.automaticRules.put(rule.id, rule);
if (setConfigLocked(newConfig, reason, true)) {
return rule.id;
} else {
throw new AndroidRuntimeException("Could not create rule");
}
}
}
use of android.service.notification.ZenModeConfig in project android_frameworks_base by AOSPA.
the class ZenModeHelper method setNotificationPolicy.
public void setNotificationPolicy(Policy policy) {
if (policy == null || mConfig == null)
return;
synchronized (mConfig) {
final ZenModeConfig newConfig = mConfig.copy();
newConfig.applyNotificationPolicy(policy);
setConfigLocked(newConfig, "setNotificationPolicy");
}
}
use of android.service.notification.ZenModeConfig in project android_frameworks_base by AOSPA.
the class ZenModeHelper method cleanUpZenRules.
/**
* Removes old rule instances whose owner is not installed.
*/
private void cleanUpZenRules() {
long currentTime = System.currentTimeMillis();
synchronized (mConfig) {
final ZenModeConfig newConfig = mConfig.copy();
if (newConfig.automaticRules != null) {
for (int i = newConfig.automaticRules.size() - 1; i >= 0; i--) {
ZenRule rule = newConfig.automaticRules.get(newConfig.automaticRules.keyAt(i));
if (RULE_INSTANCE_GRACE_PERIOD < (currentTime - rule.creationTime)) {
try {
mPm.getPackageInfo(rule.component.getPackageName(), PackageManager.MATCH_UNINSTALLED_PACKAGES);
} catch (PackageManager.NameNotFoundException e) {
newConfig.automaticRules.removeAt(i);
}
}
}
}
setConfigLocked(newConfig, "cleanUpZenRules");
}
}
use of android.service.notification.ZenModeConfig in project android_frameworks_base by ResurrectionRemix.
the class ZenModeConditions method onConditionChanged.
@Override
public void onConditionChanged(Uri id, Condition condition) {
if (DEBUG)
Log.d(TAG, "onConditionChanged " + id + " " + condition);
ZenModeConfig config = mHelper.getConfig();
if (config == null)
return;
boolean updated = updateCondition(id, condition, config.manualRule);
for (ZenRule automaticRule : config.automaticRules.values()) {
updated |= updateCondition(id, condition, automaticRule);
updated |= updateSnoozing(automaticRule);
}
if (updated) {
mHelper.setConfig(config, "conditionChanged");
}
}
use of android.service.notification.ZenModeConfig in project android_frameworks_base by ResurrectionRemix.
the class ZenModeHelper method removeAutomaticZenRule.
public boolean removeAutomaticZenRule(String id, String reason) {
ZenModeConfig newConfig;
synchronized (mConfig) {
if (mConfig == null)
return false;
newConfig = mConfig.copy();
ZenRule rule = newConfig.automaticRules.get(id);
if (rule == null)
return false;
if (canManageAutomaticZenRule(rule)) {
newConfig.automaticRules.remove(id);
if (DEBUG)
Log.d(TAG, "removeZenRule zenRule=" + id + " reason=" + reason);
} else {
throw new SecurityException("Cannot delete rules not owned by your condition provider");
}
return setConfigLocked(newConfig, reason, true);
}
}
Aggregations