diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt index b67b3331a..1d48b7f1c 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/CallSettingsFragment.kt @@ -21,7 +21,9 @@ package org.linphone.activities.main.settings.fragments import android.content.Intent import android.net.Uri +import android.os.Build import android.os.Bundle +import android.provider.Settings import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -33,6 +35,7 @@ import org.linphone.R import org.linphone.activities.main.settings.viewmodels.CallSettingsViewModel import org.linphone.compatibility.Compatibility import org.linphone.databinding.SettingsCallFragmentBinding +import org.linphone.mediastream.Version class CallSettingsFragment : Fragment() { private lateinit var binding: SettingsCallFragmentBinding @@ -66,6 +69,23 @@ class CallSettingsFragment : Fragment() { } } }) + + viewModel.goToAndroidNotificationSettingsEvent.observe(viewLifecycleOwner, Observer { it.consume { + if (Build.VERSION.SDK_INT >= Version.API26_O_80) { + val i = Intent() + i.action = Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS + i.putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName) + i.putExtra( + Settings.EXTRA_CHANNEL_ID, + getString(R.string.notification_channel_service_id) + ) + i.addCategory(Intent.CATEGORY_DEFAULT) + i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) + i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) + startActivity(i) + } + } }) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt b/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt index 4bc4bc9d1..5576708ab 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/fragments/ChatSettingsFragment.kt @@ -19,7 +19,10 @@ */ package org.linphone.activities.main.settings.fragments +import android.content.Intent +import android.os.Build import android.os.Bundle +import android.provider.Settings import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -31,6 +34,7 @@ import org.linphone.R import org.linphone.activities.main.settings.viewmodels.ChatSettingsViewModel import org.linphone.compatibility.Compatibility import org.linphone.databinding.SettingsChatFragmentBinding +import org.linphone.mediastream.Version class ChatSettingsFragment : Fragment() { private lateinit var binding: SettingsChatFragmentBinding @@ -65,5 +69,22 @@ class ChatSettingsFragment : Fragment() { } } }) + + viewModel.goToAndroidNotificationSettingsEvent.observe(viewLifecycleOwner, Observer { it.consume { + if (Build.VERSION.SDK_INT >= Version.API26_O_80) { + val i = Intent() + i.action = Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS + i.putExtra(Settings.EXTRA_APP_PACKAGE, requireContext().packageName) + i.putExtra( + Settings.EXTRA_CHANNEL_ID, + getString(R.string.notification_channel_chat_id) + ) + i.addCategory(Intent.CATEGORY_DEFAULT) + i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) + i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) + startActivity(i) + } + } }) } } diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt index 1ac583a66..c7cf8f9a6 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/CallSettingsViewModel.kt @@ -118,6 +118,13 @@ class CallSettingsViewModel : GenericSettingsViewModel() { } val voiceMailUri = MutableLiveData() + val goToAndroidNotificationSettingsListener = object : SettingListenerStub() { + override fun onClicked() { + goToAndroidNotificationSettingsEvent.value = Event(true) + } + } + val goToAndroidNotificationSettingsEvent = MutableLiveData>() + init { deviceRingtone.value = core.ring == null vibrateOnIncomingCall.value = prefs.vibrateWhileIncomingCall diff --git a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ChatSettingsViewModel.kt b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ChatSettingsViewModel.kt index d5d1a5690..726a8d62b 100644 --- a/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ChatSettingsViewModel.kt +++ b/app/src/main/java/org/linphone/activities/main/settings/viewmodels/ChatSettingsViewModel.kt @@ -88,6 +88,13 @@ class ChatSettingsViewModel : GenericSettingsViewModel() { } val hideRoomsRemovedProxies = MutableLiveData() + val goToAndroidNotificationSettingsListener = object : SettingListenerStub() { + override fun onClicked() { + goToAndroidNotificationSettingsEvent.value = Event(true) + } + } + val goToAndroidNotificationSettingsEvent = MutableLiveData>() + init { downloadedImagesPublic.value = prefs.makePublicDownloadedImages initAutoDownloadList() diff --git a/app/src/main/res/layout/settings_call_fragment.xml b/app/src/main/res/layout/settings_call_fragment.xml index 843b5d153..d62817faa 100644 --- a/app/src/main/res/layout/settings_call_fragment.xml +++ b/app/src/main/res/layout/settings_call_fragment.xml @@ -157,6 +157,11 @@ linphone:defaultValue="@{viewModel.voiceMailUri}" linphone:inputType="@{InputType.TYPE_TEXT_VARIATION_URI}"/> + + diff --git a/app/src/main/res/layout/settings_chat_fragment.xml b/app/src/main/res/layout/settings_chat_fragment.xml index 82b8c9406..c6c431058 100644 --- a/app/src/main/res/layout/settings_chat_fragment.xml +++ b/app/src/main/res/layout/settings_chat_fragment.xml @@ -118,6 +118,11 @@ linphone:listener="@{viewModel.hideRoomsRemovedProxiesListener}" linphone:checked="@={viewModel.hideRoomsRemovedProxies}"/> + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ea03a8498..582b42bc0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -359,6 +359,7 @@ in seconds Voice mail URI + Android notification settings Sharing server URL @@ -378,6 +379,7 @@ Hide chat rooms from removed proxy configs If you are missing chat rooms, try to uncheck this setting + Android notification settings Use WiFi only