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