设置通知
在“设置->通知”中 选择“显示系统进程” 的话,会在应用列表中看到“蓝牙共享”应用,点击进入,打开“显示时不发出提示音”。这样,当有蓝牙设备发送文件过来时,就不再有提示了。
接下来分析一下代码,当打开这个开关时,都做了什么。
首先我们可以根据这个preferece的title,找到这个preference。是在packages/apps/Settings/src/com/android/settings/notification/AppNotificationSettings.java中的mSilent,mSilent的OnPreferenceChangeListener是在AppNotificationSettings的父类NotificationSettingsBase中设置的:
...
mSilent.setChecked(silenced);
mSilent.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
final boolean silenced = (Boolean) newValue;
final int importance =
silenced ? Ranking.IMPORTANCE_LOW : Ranking.IMPORTANCE_UNSPECIFIED;
mBackend.setImportance(mPkgInfo.packageName, mUid, importance);//1
updateDependents(importance);
return true;
}
});
...
最重要的处理是标记1处,开关打开,importance=Ranking.IMPORTANCE_LOW(2);开关关闭,importance=Ranking.IMPORTANCE_UNSPECIFIED(-1000);此处调用了NotificationBackend.setImportance:
public boolean setImportance(String pkg, int uid, int importance) {
try {
sINM.setImportance(pkg, uid, importance);
return true;
} catch (Exception e) {
Log.w(TAG, "Error calling NoMan", e);
return false;
}
}
该方法最终调用的是NotificationManagerService.setImportance:
@Override
public void setImportance(String pkg, int uid, int importance) {
enforceSystemOrSystemUI("Caller not system or systemui");
setNotificationsEnabledForPackageImpl(pkg, uid