diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt
index 5b57f772..809190d6 100644
--- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt
@@ -13,6 +13,10 @@ import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.smsmessenger.R
import com.simplemobiletools.smsmessenger.extensions.config
+import com.simplemobiletools.smsmessenger.extensions.getLockScreenVisibilityText
+import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_NOTHING
+import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_SENDER
+import com.simplemobiletools.smsmessenger.helpers.LOCK_SCREEN_SENDER_MESSAGE
import com.simplemobiletools.smsmessenger.helpers.refreshMessages
import kotlinx.android.synthetic.main.activity_settings.*
import java.util.*
@@ -36,6 +40,7 @@ class SettingsActivity : SimpleActivity() {
setupChangeDateTimeFormat()
setupFontSize()
setupShowCharacterCounter()
+ setupLockScreenVisibility()
updateTextColors(settings_scrollview)
if (blockedNumbersAtPause != -1 && blockedNumbersAtPause != getBlockedNumbers().hashCode()) {
@@ -108,7 +113,8 @@ class SettingsActivity : SimpleActivity() {
RadioItem(FONT_SIZE_SMALL, getString(R.string.small)),
RadioItem(FONT_SIZE_MEDIUM, getString(R.string.medium)),
RadioItem(FONT_SIZE_LARGE, getString(R.string.large)),
- RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large)))
+ RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large))
+ )
RadioGroupDialog(this@SettingsActivity, items, config.fontSize) {
config.fontSize = it as Int
@@ -124,4 +130,20 @@ class SettingsActivity : SimpleActivity() {
config.showCharacterCounter = settings_show_character_counter.isChecked
}
}
+
+ private fun setupLockScreenVisibility() {
+ settings_lock_screen_visibility.text = getLockScreenVisibilityText(config.lockScreenVisibilitySetting)
+ settings_lock_screen_visibility_holder.setOnClickListener {
+ val items = arrayListOf(
+ RadioItem(LOCK_SCREEN_SENDER_MESSAGE, getString(R.string.sender_and_message)),
+ RadioItem(LOCK_SCREEN_SENDER, getString(R.string.sender_only)),
+ RadioItem(LOCK_SCREEN_NOTHING, getString(R.string.nothing)),
+ )
+
+ RadioGroupDialog(this@SettingsActivity, items, config.lockScreenVisibilitySetting) {
+ config.lockScreenVisibilitySetting = it as Int
+ settings_lock_screen_visibility.text = getLockScreenVisibilityText(config.lockScreenVisibilitySetting)
+ }
+ }
+ }
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt
index 84d35a10..f32db870 100644
--- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt
@@ -709,24 +709,44 @@ fun Context.showMessageNotification(address: String, body: String, threadId: Lon
}
val largeIcon = bitmap ?: SimpleContactsHelper(this).getContactLetterIcon(sender)
- val builder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL)
- .setContentTitle(sender)
- .setContentText(body)
- .setColor(getAdjustedPrimaryColor())
- .setSmallIcon(R.drawable.ic_messenger)
- .setLargeIcon(largeIcon)
- .setStyle(NotificationCompat.BigTextStyle().setSummaryText(summaryText).bigText(body))
- .setContentIntent(pendingIntent)
- .setPriority(NotificationCompat.PRIORITY_MAX)
- .setDefaults(Notification.DEFAULT_LIGHTS)
- .setCategory(Notification.CATEGORY_MESSAGE)
- .setAutoCancel(true)
- .setSound(soundUri, AudioManager.STREAM_NOTIFICATION)
- if (replyAction != null) {
+ val builder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL).apply {
+ when (config.lockScreenVisibilitySetting) {
+ LOCK_SCREEN_SENDER_MESSAGE -> {
+ setContentTitle(sender)
+ setLargeIcon(largeIcon)
+ setContentText(body)
+ }
+ LOCK_SCREEN_SENDER -> {
+ setContentTitle(sender)
+ setLargeIcon(largeIcon)
+ }
+ }
+
+ color = getAdjustedPrimaryColor()
+ setSmallIcon(R.drawable.ic_messenger)
+ setStyle(NotificationCompat.BigTextStyle().setSummaryText(summaryText).bigText(body))
+ setContentIntent(pendingIntent)
+ priority = NotificationCompat.PRIORITY_MAX
+ setDefaults(Notification.DEFAULT_LIGHTS)
+ setCategory(Notification.CATEGORY_MESSAGE)
+ setAutoCancel(true)
+ setSound(soundUri, AudioManager.STREAM_NOTIFICATION)
+ }
+
+ if (replyAction != null && config.lockScreenVisibilitySetting == LOCK_SCREEN_SENDER_MESSAGE) {
builder.addAction(replyAction)
}
+
builder.addAction(R.drawable.ic_check_vector, getString(R.string.mark_as_read), markAsReadPendingIntent)
.setChannelId(NOTIFICATION_CHANNEL)
notificationManager.notify(threadId.hashCode(), builder.build())
}
+
+fun Context.getLockScreenVisibilityText(type: Int) = getString(
+ when (type) {
+ LOCK_SCREEN_SENDER_MESSAGE -> R.string.sender_and_message
+ LOCK_SCREEN_SENDER -> R.string.sender_only
+ else -> R.string.nothing
+ }
+)
diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt
index 451fe60f..7b767cd3 100644
--- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt
@@ -17,4 +17,8 @@ class Config(context: Context) : BaseConfig(context) {
var showCharacterCounter: Boolean
get() = prefs.getBoolean(SHOW_CHARACTER_COUNTER, false)
set(showCharacterCounter) = prefs.edit().putBoolean(SHOW_CHARACTER_COUNTER, showCharacterCounter).apply()
+
+ var lockScreenVisibilitySetting: Int
+ get() = prefs.getInt(LOCK_SCREEN_VISIBILITY, LOCK_SCREEN_SENDER_MESSAGE)
+ set(lockScreenVisibilitySetting) = prefs.edit().putInt(LOCK_SCREEN_VISIBILITY, lockScreenVisibilitySetting).apply()
}
diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt
index 477c8f9b..f73c12e0 100644
--- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt
@@ -13,6 +13,7 @@ const val SEARCHED_MESSAGE_ID = "searched_message_id"
const val USE_SIM_ID_PREFIX = "use_sim_id_"
const val NOTIFICATION_CHANNEL = "simple_sms_messenger"
const val SHOW_CHARACTER_COUNTER = "show_character_counter"
+const val LOCK_SCREEN_VISIBILITY = "lock_screen_visibility"
private const val PATH = "com.simplemobiletools.smsmessenger.action."
const val MARK_AS_READ = PATH + "mark_as_read"
@@ -26,6 +27,11 @@ const val THREAD_SENT_MESSAGE_ERROR = 4
const val THREAD_SENT_MESSAGE_SUCCESS = 5
const val THREAD_SENT_MESSAGE_SENDING = 6
+// lock screen visibility constants
+const val LOCK_SCREEN_SENDER_MESSAGE = 1
+const val LOCK_SCREEN_SENDER = 2
+const val LOCK_SCREEN_NOTHING = 3
+
fun refreshMessages() {
EventBus.getDefault().post(Events.RefreshMessages())
}
diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml
index 25fd8250..1900f25b 100644
--- a/app/src/main/res/layout/activity_settings.xml
+++ b/app/src/main/res/layout/activity_settings.xml
@@ -193,5 +193,35 @@
app:switchPadding="@dimen/medium_margin" />
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5cf58c57..6a0f4bfe 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -44,6 +44,11 @@
- %d messages
+
+ Lock screen notification visibility
+ Sender and message
+ Sender only
+
Why does the app require access to the internet?
Sadly it is needed for sending MMS attachments. Not being able to send MMS would be a really huge disadvantage compared to other apps, so we decided to go this way.