diff --git a/CHANGELOG.md b/CHANGELOG.md
index 19d177b03..81d941a09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,7 +13,7 @@ Group changes to describe their impact on the project, as follows:
## [Unreleased]
### Added
-- Added shortcuts to calls history & chat rooms list
+- Added shortcuts to contacts' latest chat rooms
- Improved device's do not disturb policy compliance
- Added sample application to help developpers getting started with our SDK
- Added picture in picture feature if supported instead of video overlay
diff --git a/app/src/main/java/org/linphone/compatibility/ApiTwentyFivePlus.java b/app/src/main/java/org/linphone/compatibility/ApiTwentyFivePlus.java
index 60802b676..f102e286e 100644
--- a/app/src/main/java/org/linphone/compatibility/ApiTwentyFivePlus.java
+++ b/app/src/main/java/org/linphone/compatibility/ApiTwentyFivePlus.java
@@ -42,6 +42,12 @@ import org.linphone.utils.LinphoneUtils;
@TargetApi(25)
class ApiTwentyFivePlus {
+ public static void removeChatShortcuts(Context context) {
+ ShortcutManager shortcutManager =
+ (ShortcutManager) context.getSystemService(Context.SHORTCUT_SERVICE);
+ shortcutManager.removeAllDynamicShortcuts();
+ }
+
public static void createChatShortcuts(Context context) {
if (!LinphonePreferences.instance().shortcutsCreationEnabled()) return;
diff --git a/app/src/main/java/org/linphone/compatibility/Compatibility.java b/app/src/main/java/org/linphone/compatibility/Compatibility.java
index 1052827a0..ae307b376 100644
--- a/app/src/main/java/org/linphone/compatibility/Compatibility.java
+++ b/app/src/main/java/org/linphone/compatibility/Compatibility.java
@@ -251,6 +251,12 @@ public class Compatibility {
}
}
+ public static void removeChatShortcuts(Context context) {
+ if (Version.sdkAboveOrEqual(Version.API25_NOUGAT_71)) {
+ ApiTwentyFivePlus.removeChatShortcuts(context);
+ }
+ }
+
public static void enterPipMode(Activity activity) {
if (Version.sdkAboveOrEqual(Version.API26_O_80)) {
ApiTwentySixPlus.enterPipMode(activity);
diff --git a/app/src/main/java/org/linphone/settings/ContactSettingsFragment.java b/app/src/main/java/org/linphone/settings/ContactSettingsFragment.java
index e1483dd84..d56ed1f01 100644
--- a/app/src/main/java/org/linphone/settings/ContactSettingsFragment.java
+++ b/app/src/main/java/org/linphone/settings/ContactSettingsFragment.java
@@ -24,6 +24,8 @@ import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import org.linphone.R;
+import org.linphone.compatibility.Compatibility;
+import org.linphone.mediastream.Version;
import org.linphone.settings.widget.SettingListenerBase;
import org.linphone.settings.widget.SwitchSetting;
@@ -79,10 +81,11 @@ public class ContactSettingsFragment extends SettingsFragment {
mDisplayDetailContact.setVisibility(View.INVISIBLE);
}
- if (getResources().getBoolean(R.bool.create_most_recent_chat_rooms_shortcuts)) {
+ if (Version.sdkAboveOrEqual(Version.API25_NOUGAT_71)
+ && getResources().getBoolean(R.bool.create_most_recent_chat_rooms_shortcuts)) {
mCreateShortcuts.setChecked(mPrefs.shortcutsCreationEnabled());
} else {
- mCreateShortcuts.setVisibility(View.INVISIBLE);
+ mCreateShortcuts.setVisibility(View.GONE);
}
}
@@ -125,6 +128,11 @@ public class ContactSettingsFragment extends SettingsFragment {
@Override
public void onBoolValueChanged(boolean newValue) {
mPrefs.enableChatRoomsShortcuts(newValue);
+ if (newValue) {
+ Compatibility.createChatShortcuts(getActivity());
+ } else {
+ Compatibility.removeChatShortcuts(getActivity());
+ }
}
});
}
diff --git a/app/src/main/res/values/non_localizable_custom.xml b/app/src/main/res/values/non_localizable_custom.xml
index 6fedc32a1..fb8d4f996 100644
--- a/app/src/main/res/values/non_localizable_custom.xml
+++ b/app/src/main/res/values/non_localizable_custom.xml
@@ -94,7 +94,7 @@
true
false
true
- false
+ true
false