Merge "Add group name into channel summary, if applicable." into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
4b29f593f0
@@ -8685,4 +8685,8 @@
|
|||||||
<!-- Title for the installed app info storage page. The total storage space taken up by this app. [CHAR LIMIT=40]-->
|
<!-- Title for the installed app info storage page. The total storage space taken up by this app. [CHAR LIMIT=40]-->
|
||||||
<string name="app_info_storage_title">Space used</string>
|
<string name="app_info_storage_title">Space used</string>
|
||||||
|
|
||||||
|
<!-- The divider symbol between different parts of the notification header including spaces. not translatable [CHAR LIMIT=3] -->
|
||||||
|
<string name="notification_header_divider_symbol_with_spaces" translatable="false">" • "</string>
|
||||||
|
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@@ -22,15 +22,17 @@ import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.NotificationChannel;
|
import android.app.NotificationChannel;
|
||||||
|
import android.app.NotificationChannelGroup;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.UserInfo;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.UserHandle;
|
import android.os.AsyncTask;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.text.BidiFormatter;
|
||||||
|
import android.text.SpannableStringBuilder;
|
||||||
import android.util.ArrayMap;
|
import android.util.ArrayMap;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
@@ -38,7 +40,6 @@ import android.view.View;
|
|||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
|
|
||||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||||
import com.android.internal.widget.LockPatternUtils;
|
|
||||||
import com.android.settings.AppHeader;
|
import com.android.settings.AppHeader;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.RingtonePreference;
|
import com.android.settings.RingtonePreference;
|
||||||
@@ -64,6 +65,8 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
|||||||
private RestrictedSwitchPreference mVibrate;
|
private RestrictedSwitchPreference mVibrate;
|
||||||
private NotificationSoundPreference mRingtone;
|
private NotificationSoundPreference mRingtone;
|
||||||
private FooterPreference mFooter;
|
private FooterPreference mFooter;
|
||||||
|
private NotificationChannelGroup mChannelGroup;
|
||||||
|
private AppHeaderController mHeaderPref;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMetricsCategory() {
|
public int getMetricsCategory() {
|
||||||
@@ -93,6 +96,27 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
|||||||
mShowLegacyChannelConfig = true;
|
mShowLegacyChannelConfig = true;
|
||||||
} else {
|
} else {
|
||||||
populateUpgradedChannelPrefs();
|
populateUpgradedChannelPrefs();
|
||||||
|
|
||||||
|
if (mChannel.getGroup() != null) {
|
||||||
|
// Go look up group name
|
||||||
|
new AsyncTask<Void, Void, Void>() {
|
||||||
|
@Override
|
||||||
|
protected Void doInBackground(Void... unused) {
|
||||||
|
if (mChannel.getGroup() != null) {
|
||||||
|
mChannelGroup = mBackend.getGroup(mChannel.getGroup(), mPkg, mUid);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(Void unused) {
|
||||||
|
if (getHost() == null || mChannelGroup == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setChannelGroupLabel(mChannelGroup.getName());
|
||||||
|
}
|
||||||
|
}.execute();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
updateDependents(mChannel.getImportance() == IMPORTANCE_NONE);
|
updateDependents(mChannel.getImportance() == IMPORTANCE_NONE);
|
||||||
@@ -114,9 +138,10 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
|||||||
rows.put(mAppRow.pkg, mAppRow);
|
rows.put(mAppRow.pkg, mAppRow);
|
||||||
collectConfigActivities(rows);
|
collectConfigActivities(rows);
|
||||||
final Activity activity = getActivity();
|
final Activity activity = getActivity();
|
||||||
final Preference pref = FeatureFactory.getFactory(activity)
|
mHeaderPref = FeatureFactory.getFactory(activity)
|
||||||
.getApplicationFeatureProvider(activity)
|
.getApplicationFeatureProvider(activity)
|
||||||
.newAppHeaderController(this /* fragment */, null /* appHeader */)
|
.newAppHeaderController(this /* fragment */, null /* appHeader */);
|
||||||
|
final Preference pref = mHeaderPref
|
||||||
.setIcon(mAppRow.icon)
|
.setIcon(mAppRow.icon)
|
||||||
.setLabel(mChannel.getName())
|
.setLabel(mChannel.getName())
|
||||||
.setSummary(mAppRow.label)
|
.setSummary(mAppRow.label)
|
||||||
@@ -128,6 +153,20 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
|||||||
getPreferenceScreen().addPreference(pref);
|
getPreferenceScreen().addPreference(pref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setChannelGroupLabel(CharSequence groupName) {
|
||||||
|
final SpannableStringBuilder summary = new SpannableStringBuilder();
|
||||||
|
BidiFormatter bidi = BidiFormatter.getInstance();
|
||||||
|
summary.append(bidi.unicodeWrap(mAppRow.label.toString()));
|
||||||
|
if (groupName != null) {
|
||||||
|
summary.append(bidi.unicodeWrap(mContext.getText(
|
||||||
|
R.string.notification_header_divider_symbol_with_spaces)));
|
||||||
|
summary.append(bidi.unicodeWrap(groupName.toString()));
|
||||||
|
}
|
||||||
|
final Activity activity = getActivity();
|
||||||
|
mHeaderPref.setSummary(summary.toString());
|
||||||
|
mHeaderPref.done(activity, getPrefContext());
|
||||||
|
}
|
||||||
|
|
||||||
private void addFooterPref() {
|
private void addFooterPref() {
|
||||||
if (!TextUtils.isEmpty(mChannel.getDescription())) {
|
if (!TextUtils.isEmpty(mChannel.getDescription())) {
|
||||||
FooterPreference descPref = new FooterPreference(getPrefContext());
|
FooterPreference descPref = new FooterPreference(getPrefContext());
|
||||||
@@ -345,7 +384,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
|
|||||||
if (mAppLink != null) {
|
if (mAppLink != null) {
|
||||||
setVisible(mAppLink, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));
|
setVisible(mAppLink, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));
|
||||||
}
|
}
|
||||||
if (mFooter !=null) {
|
if (mFooter != null) {
|
||||||
setVisible(mFooter, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));
|
setVisible(mFooter, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -122,6 +122,19 @@ public class NotificationBackend {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public NotificationChannelGroup getGroup(String groupId, String pkg, int uid) {
|
||||||
|
if (groupId == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return sINM.getNotificationChannelGroupForPackage(groupId, pkg, uid);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.w(TAG, "Error calling NoMan", e);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public ParceledListSlice<NotificationChannelGroup> getChannelGroups(String pkg, int uid) {
|
public ParceledListSlice<NotificationChannelGroup> getChannelGroups(String pkg, int uid) {
|
||||||
try {
|
try {
|
||||||
return sINM.getNotificationChannelGroupsForPackage(pkg, uid, false);
|
return sINM.getNotificationChannelGroupsForPackage(pkg, uid, false);
|
||||||
|
Reference in New Issue
Block a user