Remove the xml entry when the system language is removed
Bug: 301395074 Test: atest SettingsRoboTests:com.android.settings.localepicker Change-Id: Ic771cd5146ab954c3da65748bf87cd14d30770b4
This commit is contained in:
@@ -158,13 +158,14 @@ public class AppLocalePickerActivity extends SettingsBaseActivity
|
||||
|
||||
private void broadcastAppLocaleChange(LocaleStore.LocaleInfo localeInfo) {
|
||||
if (!localeNotificationEnabled()) {
|
||||
Log.w(TAG, "Locale notification is not enabled");
|
||||
return;
|
||||
}
|
||||
String localeTag = localeInfo.getLocale().toLanguageTag();
|
||||
if (LocaleUtils.isInSystemLocale(localeTag) || localeInfo.isAppCurrentLocale()) {
|
||||
if (localeInfo.isAppCurrentLocale()) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
String localeTag = localeInfo.getLocale().toLanguageTag();
|
||||
int uid = getPackageManager().getApplicationInfo(mPackageName,
|
||||
PackageManager.GET_META_DATA).uid;
|
||||
boolean launchNotification = mNotificationController.shouldTriggerNotification(
|
||||
|
||||
@@ -270,12 +270,14 @@ class LocaleDragAndDropAdapter
|
||||
void removeChecked() {
|
||||
int itemCount = mFeedItemList.size();
|
||||
LocaleStore.LocaleInfo localeInfo;
|
||||
NotificationController controller = NotificationController.getInstance(mContext);
|
||||
for (int i = itemCount - 1; i >= 0; i--) {
|
||||
localeInfo = mFeedItemList.get(i);
|
||||
if (localeInfo.getChecked()) {
|
||||
FeatureFactory.getFeatureFactory().getMetricsFeatureProvider()
|
||||
.action(mContext, SettingsEnums.ACTION_REMOVE_LANGUAGE);
|
||||
mFeedItemList.remove(i);
|
||||
controller.removeNotificationInfo(localeInfo.getLocale().toLanguageTag());
|
||||
}
|
||||
}
|
||||
notifyDataSetChanged();
|
||||
|
||||
@@ -62,6 +62,17 @@ public class LocaleNotificationDataManager {
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes one entry with the corresponding locale from the {@link SharedPreferences}.
|
||||
*
|
||||
* @param locale A locale which the application sets to
|
||||
*/
|
||||
public void removeNotificationInfo(String locale) {
|
||||
SharedPreferences.Editor editor = getSharedPreferences(mContext).edit();
|
||||
editor.remove(locale);
|
||||
editor.apply();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the {@link NotificationInfo} with the associated locale from the
|
||||
* {@link SharedPreferences}.
|
||||
|
||||
@@ -110,6 +110,15 @@ public class NotificationController {
|
||||
return (info != null) ? info.getNotificationId() : -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the {@link NotificationInfo} with the corresponding locale
|
||||
*
|
||||
* @param locale The locale which the application sets to
|
||||
*/
|
||||
public void removeNotificationInfo(@NonNull String locale) {
|
||||
mDataManager.removeNotificationInfo(locale);
|
||||
}
|
||||
|
||||
private boolean updateLocaleNotificationInfo(int uid, String locale) {
|
||||
NotificationInfo info = mDataManager.getNotificationInfo(locale);
|
||||
if (info == null) {
|
||||
@@ -135,20 +144,20 @@ public class NotificationController {
|
||||
int notificationCount = info.getNotificationCount();
|
||||
long lastNotificationTime = info.getLastNotificationTimeMs();
|
||||
int notificationId = info.getNotificationId();
|
||||
|
||||
// Add the uid into the locale's uid list
|
||||
uidSet.add(uid);
|
||||
if (dismissCount < DISMISS_COUNT_THRESHOLD
|
||||
&& notificationCount < NOTIFICATION_COUNT_THRESHOLD
|
||||
// Notification should fire on multiples of 2 apps using the locale.
|
||||
&& uidSet.size() % MULTIPLE_BASE == 0
|
||||
&& !isNotificationFrequent(lastNotificationTime)) {
|
||||
// Increment the count because the notification can be triggered.
|
||||
notificationCount = info.getNotificationCount() + 1;
|
||||
lastNotificationTime = Calendar.getInstance().getTimeInMillis();
|
||||
Log.i(TAG, "notificationCount:" + notificationCount);
|
||||
if (notificationCount == 1) {
|
||||
notificationId = (int) SystemClock.uptimeMillis();
|
||||
&& notificationCount < NOTIFICATION_COUNT_THRESHOLD) {
|
||||
// Add the uid into the locale's uid list
|
||||
uidSet.add(uid);
|
||||
// Notification should fire on multiples of 2 apps using the locale.
|
||||
if (uidSet.size() % MULTIPLE_BASE == 0
|
||||
&& !isNotificationFrequent(lastNotificationTime)) {
|
||||
// Increment the count because the notification can be triggered.
|
||||
notificationCount = info.getNotificationCount() + 1;
|
||||
lastNotificationTime = Calendar.getInstance().getTimeInMillis();
|
||||
Log.i(TAG, "notificationCount:" + notificationCount);
|
||||
if (notificationCount == 1) {
|
||||
notificationId = (int) SystemClock.uptimeMillis();
|
||||
}
|
||||
}
|
||||
}
|
||||
return new NotificationInfo(uidSet, notificationCount, dismissCount, lastNotificationTime,
|
||||
|
||||
Reference in New Issue
Block a user