diff --git a/app/build.gradle b/app/build.gradle index 19659240..9fc60274 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -66,10 +66,10 @@ android { } dependencies { - implementation 'com.github.SimpleMobileTools:Simple-Commons:4c83ec8740' + implementation 'com.github.SimpleMobileTools:Simple-Commons:b4cc381943' implementation 'org.greenrobot:eventbus:3.3.1' implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61' - implementation 'com.github.tibbi:android-smsmms:33fcaf94d9' + implementation 'com.github.tibbi:android-smsmms:5657799572' implementation "me.leolin:ShortcutBadger:1.1.22" implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' implementation 'com.googlecode.ez-vcard:ez-vcard:0.11.3' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3820008d..aa49b1c0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -128,6 +128,13 @@ android:label="@string/blocked_numbers" android:parentActivityName=".activities.SettingsActivity" /> + + + when (menuItem.itemId) { + R.id.add_blocked_keyword -> { + addOrEditBlockedKeyword() + true + } + + else -> false + } + } + } + + override fun refreshItems() { + updateBlockedKeywords() + } + + private fun updateBlockedKeywords() { + ensureBackgroundThread { + val blockedKeywords = config.blockedKeywords + runOnUiThread { + ManageBlockedKeywordsAdapter(this, blockedKeywords.toArrayList(), this, manage_blocked_keywords_list) { + addOrEditBlockedKeyword(it as String) + }.apply { + manage_blocked_keywords_list.adapter = this + } + + manage_blocked_keywords_placeholder.beVisibleIf(blockedKeywords.isEmpty()) + manage_blocked_keywords_placeholder_2.beVisibleIf(blockedKeywords.isEmpty()) + } + } + } + + private fun addOrEditBlockedKeyword(keyword: String? = null) { + AddBlockedKeywordDialog(this, keyword) { + updateBlockedKeywords() + } + } +} 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 cb697ece..310c81f9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/SettingsActivity.kt @@ -48,6 +48,7 @@ class SettingsActivity : SimpleActivity() { setupUseEnglish() setupLanguage() setupManageBlockedNumbers() + setupManageBlockedKeywords() setupChangeDateTimeFormat() setupFontSize() setupShowCharacterCounter() @@ -212,6 +213,20 @@ class SettingsActivity : SimpleActivity() { } } + private fun setupManageBlockedKeywords() { + settings_manage_blocked_keywords.text = addLockedLabelIfNeeded(R.string.manage_blocked_keywords) + + settings_manage_blocked_keywords_holder.setOnClickListener { + if (isOrWasThankYouInstalled()) { + Intent(this, ManageBlockedKeywordsActivity::class.java).apply { + startActivity(this) + } + } else { + FeatureLockedDialog(this) { } + } + } + } + private fun setupChangeDateTimeFormat() { settings_change_date_time_format_holder.setOnClickListener { ChangeDateTimeFormatDialog(this) { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt index 08f251ac..62e03a05 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/activities/ThreadActivity.kt @@ -1606,6 +1606,7 @@ class ThreadActivity : SimpleActivity() { threadId = threadId, isMMS = isMmsMessage(text), attachment = MessageAttachment(messageId, text, buildMessageAttachments(messageId)), + senderPhoneNumber = "", senderName = "", senderPhotoUri = "", subscriptionId = subscriptionId, diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 95007916..82da0e28 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -33,6 +33,7 @@ import com.simplemobiletools.smsmessenger.activities.NewConversationActivity import com.simplemobiletools.smsmessenger.activities.SimpleActivity import com.simplemobiletools.smsmessenger.activities.ThreadActivity import com.simplemobiletools.smsmessenger.activities.VCardViewerActivity +import com.simplemobiletools.smsmessenger.dialogs.MessageDetailsDialog import com.simplemobiletools.smsmessenger.dialogs.SelectTextDialog import com.simplemobiletools.smsmessenger.extensions.* import com.simplemobiletools.smsmessenger.helpers.* @@ -82,6 +83,7 @@ class ThreadAdapter( findItem(R.id.cab_share).isVisible = isOneItemSelected && hasText findItem(R.id.cab_forward_message).isVisible = isOneItemSelected findItem(R.id.cab_select_text).isVisible = isOneItemSelected && hasText + findItem(R.id.cab_properties).isVisible = isOneItemSelected } } @@ -98,6 +100,7 @@ class ThreadAdapter( R.id.cab_select_text -> selectText() R.id.cab_delete -> askConfirmDelete() R.id.cab_select_all -> selectAll() + R.id.cab_properties -> showMessageDetails() } } @@ -184,6 +187,11 @@ class ThreadAdapter( } } + private fun showMessageDetails() { + val message = getSelectedItems().firstOrNull() as? Message ?: return + MessageDetailsDialog(activity, message) + } + private fun askConfirmDelete() { val itemsCnt = selectedKeys.size @@ -283,7 +291,7 @@ class ThreadAdapter( view.apply { thread_message_sender_photo.beVisible() thread_message_sender_photo.setOnClickListener { - val contact = message.participants.first() + val contact = message.getSender()!! context.getContactFromAddress(contact.phoneNumbers.first().normalizedNumber) { if (it != null) { activity.startContactDetailsIntent(it) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/databases/MessagesDatabase.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/databases/MessagesDatabase.kt index 030d6be6..fca0754b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/databases/MessagesDatabase.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/databases/MessagesDatabase.kt @@ -17,7 +17,7 @@ import com.simplemobiletools.smsmessenger.models.Conversation import com.simplemobiletools.smsmessenger.models.Message import com.simplemobiletools.smsmessenger.models.MessageAttachment -@Database(entities = [Conversation::class, Attachment::class, MessageAttachment::class, Message::class], version = 6) +@Database(entities = [Conversation::class, Attachment::class, MessageAttachment::class, Message::class], version = 7) @TypeConverters(Converters::class) abstract class MessagesDatabase : RoomDatabase() { @@ -43,6 +43,7 @@ abstract class MessagesDatabase : RoomDatabase() { .addMigrations(MIGRATION_3_4) .addMigrations(MIGRATION_4_5) .addMigrations(MIGRATION_5_6) + .addMigrations(MIGRATION_6_7) .build() } } @@ -106,5 +107,13 @@ abstract class MessagesDatabase : RoomDatabase() { } } } + + private val MIGRATION_6_7 = object : Migration(6, 7) { + override fun migrate(database: SupportSQLiteDatabase) { + database.apply { + execSQL("ALTER TABLE messages ADD COLUMN sender_phone_number TEXT NOT NULL DEFAULT ''") + } + } + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/AddBlockedKeywordDialog.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/AddBlockedKeywordDialog.kt new file mode 100644 index 00000000..2f55e791 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/AddBlockedKeywordDialog.kt @@ -0,0 +1,43 @@ +package com.simplemobiletools.smsmessenger.dialogs + +import androidx.appcompat.app.AlertDialog +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.extensions.getAlertDialogBuilder +import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.commons.extensions.showKeyboard +import com.simplemobiletools.commons.extensions.value +import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.extensions.config +import kotlinx.android.synthetic.main.dialog_add_blocked_keyword.view.add_blocked_keyword_edittext + +class AddBlockedKeywordDialog(val activity: BaseSimpleActivity, private val originalKeyword: String? = null, val callback: () -> Unit) { + init { + val view = activity.layoutInflater.inflate(R.layout.dialog_add_blocked_keyword, null).apply { + if (originalKeyword != null) { + add_blocked_keyword_edittext.setText(originalKeyword) + } + } + + activity.getAlertDialogBuilder() + .setPositiveButton(R.string.ok, null) + .setNegativeButton(R.string.cancel, null) + .apply { + activity.setupDialogStuff(view, this) { alertDialog -> + alertDialog.showKeyboard(view.add_blocked_keyword_edittext) + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { + val newBlockedKeyword = view.add_blocked_keyword_edittext.value + if (originalKeyword != null && newBlockedKeyword != originalKeyword) { + activity.config.removeBlockedKeyword(originalKeyword) + } + + if (newBlockedKeyword.isNotEmpty()) { + activity.config.addBlockedKeyword(newBlockedKeyword) + } + + callback() + alertDialog.dismiss() + } + } + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/ExportMessagesDialog.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/ExportMessagesDialog.kt index 48bb8d5f..c3f5818f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/ExportMessagesDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/ExportMessagesDialog.kt @@ -15,6 +15,7 @@ import kotlinx.android.synthetic.main.dialog_export_messages.view.export_message import kotlinx.android.synthetic.main.dialog_export_messages.view.export_mms_checkbox import kotlinx.android.synthetic.main.dialog_export_messages.view.export_sms_checkbox + class ExportMessagesDialog( private val activity: SimpleActivity, private val callback: (fileName: String) -> Unit, @@ -39,6 +40,7 @@ class ExportMessagesDialog( filename.isAValidFilename() -> { callback(filename) alertDialog.dismiss() + } else -> activity.toast(R.string.invalid_name) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/ManageBlockedKeywordsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/ManageBlockedKeywordsAdapter.kt new file mode 100644 index 00000000..51c7a855 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/ManageBlockedKeywordsAdapter.kt @@ -0,0 +1,148 @@ +package com.simplemobiletools.smsmessenger.dialogs + +import android.view.* +import android.widget.PopupMenu +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter +import com.simplemobiletools.commons.extensions.copyToClipboard +import com.simplemobiletools.commons.extensions.getPopupMenuTheme +import com.simplemobiletools.commons.extensions.getProperTextColor +import com.simplemobiletools.commons.extensions.setupViewBackground +import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener +import com.simplemobiletools.commons.views.MyRecyclerView +import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.extensions.config +import kotlinx.android.synthetic.main.item_manage_blocked_keyword.view.manage_blocked_keyword_holder +import kotlinx.android.synthetic.main.item_manage_blocked_keyword.view.manage_blocked_keyword_title +import kotlinx.android.synthetic.main.item_manage_blocked_keyword.view.overflow_menu_anchor +import kotlinx.android.synthetic.main.item_manage_blocked_keyword.view.overflow_menu_icon + +class ManageBlockedKeywordsAdapter( + activity: BaseSimpleActivity, var blockedKeywords: ArrayList, val listener: RefreshRecyclerViewListener?, + recyclerView: MyRecyclerView, itemClick: (Any) -> Unit +) : MyRecyclerViewAdapter(activity, recyclerView, itemClick) { + init { + setupDragListener(true) + } + + override fun getActionMenuId() = R.menu.cab_blocked_keywords + + override fun prepareActionMode(menu: Menu) { + menu.apply { + findItem(R.id.cab_copy_keyword).isVisible = isOneItemSelected() + } + } + + override fun actionItemPressed(id: Int) { + if (selectedKeys.isEmpty()) { + return + } + + when (id) { + R.id.cab_copy_keyword -> copyKeywordToClipboard() + R.id.cab_delete -> deleteSelection() + } + } + + override fun getSelectableItemCount() = blockedKeywords.size + + override fun getIsItemSelectable(position: Int) = true + + override fun getItemSelectionKey(position: Int) = blockedKeywords.getOrNull(position)?.hashCode() + + override fun getItemKeyPosition(key: Int) = blockedKeywords.indexOfFirst { it.hashCode() == key } + + override fun onActionModeCreated() {} + + override fun onActionModeDestroyed() {} + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_manage_blocked_keyword, parent) + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + val blockedKeyword = blockedKeywords[position] + holder.bindView(blockedKeyword, true, true) { itemView, _ -> + setupView(itemView, blockedKeyword) + } + bindViewHolder(holder) + } + + override fun getItemCount() = blockedKeywords.size + + private fun getSelectedItems() = blockedKeywords.filter { selectedKeys.contains(it.hashCode()) } + + private fun setupView(view: View, blockedKeyword: String) { + view.apply { + setupViewBackground(activity) + manage_blocked_keyword_holder?.isSelected = selectedKeys.contains(blockedKeyword.hashCode()) + manage_blocked_keyword_title.apply { + text = blockedKeyword + setTextColor(textColor) + } + + overflow_menu_icon.drawable.apply { + mutate() + setTint(activity.getProperTextColor()) + } + + overflow_menu_icon.setOnClickListener { + showPopupMenu(overflow_menu_anchor, blockedKeyword) + } + } + } + + private fun showPopupMenu(view: View, blockedKeyword: String) { + finishActMode() + val theme = activity.getPopupMenuTheme() + val contextTheme = ContextThemeWrapper(activity, theme) + + PopupMenu(contextTheme, view, Gravity.END).apply { + inflate(getActionMenuId()) + setOnMenuItemClickListener { item -> + val blockedKeywordId = blockedKeyword.hashCode() + when (item.itemId) { + R.id.cab_copy_keyword -> { + executeItemMenuOperation(blockedKeywordId) { + copyKeywordToClipboard() + } + } + + R.id.cab_delete -> { + executeItemMenuOperation(blockedKeywordId) { + deleteSelection() + } + } + } + true + } + show() + } + } + + private fun executeItemMenuOperation(blockedKeywordId: Int, callback: () -> Unit) { + selectedKeys.add(blockedKeywordId) + callback() + selectedKeys.remove(blockedKeywordId) + } + + private fun copyKeywordToClipboard() { + val selectedKeyword = getSelectedItems().firstOrNull() ?: return + activity.copyToClipboard(selectedKeyword) + finishActMode() + } + + private fun deleteSelection() { + val deleteBlockedKeywords = HashSet(selectedKeys.size) + val positions = getSelectedItemPositions() + + getSelectedItems().forEach { + deleteBlockedKeywords.add(it) + activity.config.removeBlockedKeyword(it) + } + + blockedKeywords.removeAll(deleteBlockedKeywords) + removeSelectedItems(positions) + if (blockedKeywords.isEmpty()) { + listener?.refreshItems() + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/MessageDetailsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/MessageDetailsDialog.kt new file mode 100644 index 00000000..3088cbd8 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/dialogs/MessageDetailsDialog.kt @@ -0,0 +1,73 @@ +package com.simplemobiletools.smsmessenger.dialogs + +import android.annotation.SuppressLint +import android.telephony.SubscriptionInfo +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.dialogs.BasePropertiesDialog +import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.extensions.config +import com.simplemobiletools.smsmessenger.extensions.subscriptionManagerCompat +import com.simplemobiletools.smsmessenger.models.Message +import org.joda.time.DateTime + +class MessageDetailsDialog(val activity: BaseSimpleActivity, val message: Message) : BasePropertiesDialog(activity) { + init { + @SuppressLint("MissingPermission") + val availableSIMs = activity.subscriptionManagerCompat().activeSubscriptionInfoList + + addProperty(message.getSenderOrReceiverLabel(), message.getSenderOrReceiverPhoneNumbers()) + if (availableSIMs.count() > 1) { + addProperty(R.string.message_details_sim, message.getSIM(availableSIMs)) + } + addProperty(message.getSentOrReceivedAtLabel(), message.getSentOrReceivedAt()) + + activity.getAlertDialogBuilder() + .setPositiveButton(R.string.ok) { _, _ -> } + .apply { + activity.setupDialogStuff(mDialogView, this, R.string.message_details) + } + } + + private fun Message.getSenderOrReceiverLabel(): Int { + return if (isReceivedMessage()) { + R.string.message_details_sender + } else { + R.string.message_details_receiver + } + } + + private fun Message.getSenderOrReceiverPhoneNumbers(): String { + return if (isReceivedMessage()) { + formatContactInfo(senderName, senderPhoneNumber) + } else { + participants.joinToString(", ") { + formatContactInfo(it.name, it.phoneNumbers.first().value) + } + } + } + + private fun formatContactInfo(name: String, phoneNumber: String): String { + return if (name != phoneNumber) { + "$name ($phoneNumber)" + } else { + phoneNumber + } + } + + private fun Message.getSIM(availableSIMs: List): String { + return availableSIMs.firstOrNull { it.subscriptionId == subscriptionId }?.displayName?.toString() ?: activity.getString(R.string.unknown) + } + + private fun Message.getSentOrReceivedAtLabel(): Int { + return if (isReceivedMessage()) { + R.string.message_details_received_at + } else { + R.string.message_details_sent_at + } + } + + private fun Message.getSentOrReceivedAt(): String { + return DateTime(date * 1000L).toString("${activity.config.dateFormat} ${activity.getTimeFormat()}") + } +} 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 f0faebb5..d07b3c8d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Context.kt @@ -116,7 +116,23 @@ fun Context.getMessages( SimpleContact(0, 0, participantPhoto.name, photoUri, arrayListOf(phoneNumber), ArrayList(), ArrayList()) } val isMMS = false - val message = Message(id, body, type, status, ArrayList(participants), date, read, thread, isMMS, null, senderName, photoUri, subscriptionId) + val message = + Message( + id, + body, + type, + status, + ArrayList(participants), + date, + read, + thread, + isMMS, + null, + senderNumber, + senderName, + photoUri, + subscriptionId + ) messages.add(message) } @@ -189,17 +205,34 @@ fun Context.getMMS(threadId: Long? = null, getImageResolutions: Boolean = false, val isMMS = true val attachment = getMmsAttachment(mmsId, getImageResolutions) val body = attachment.text + var senderNumber = "" var senderName = "" var senderPhotoUri = "" if (type != Mms.MESSAGE_BOX_SENT && type != Mms.MESSAGE_BOX_FAILED) { - val number = getMMSSender(mmsId) - val namePhoto = getNameAndPhotoFromPhoneNumber(number) + senderNumber = getMMSSender(mmsId) + val namePhoto = getNameAndPhotoFromPhoneNumber(senderNumber) senderName = namePhoto.name senderPhotoUri = namePhoto.photoUri ?: "" } - val message = Message(mmsId, body, type, status, participants, date, read, threadId, isMMS, attachment, senderName, senderPhotoUri, subscriptionId) + val message = + Message( + mmsId, + body, + type, + status, + participants, + date, + read, + threadId, + isMMS, + attachment, + senderNumber, + senderName, + senderPhotoUri, + subscriptionId + ) messages.add(message) participants.forEach { @@ -557,7 +590,16 @@ fun Context.getNameAndPhotoFromPhoneNumber(number: String): NamePhoto { return NamePhoto(number, null) } -fun Context.insertNewSMS(address: String, subject: String, body: String, date: Long, read: Int, threadId: Long, type: Int, subscriptionId: Int): Long { +fun Context.insertNewSMS( + address: String, + subject: String, + body: String, + date: Long, + read: Int, + threadId: Long, + type: Int, + subscriptionId: Int +): Long { val uri = Sms.CONTENT_URI val contentValues = ContentValues().apply { put(Sms.ADDRESS, address) 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 b9b5c85b..18859f76 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Config.kt @@ -68,6 +68,18 @@ class Config(context: Context) : BaseConfig(context) { pinnedConversations = pinnedConversations.minus(conversations.map { it.threadId.toString() }) } + var blockedKeywords: Set + get() = prefs.getStringSet(BLOCKED_KEYWORDS, HashSet())!! + set(blockedKeywords) = prefs.edit().putStringSet(BLOCKED_KEYWORDS, blockedKeywords).apply() + + fun addBlockedKeyword(keyword: String) { + blockedKeywords = blockedKeywords.plus(keyword) + } + + fun removeBlockedKeyword(keyword: String) { + blockedKeywords = blockedKeywords.minus(keyword) + } + var exportSms: Boolean get() = prefs.getBoolean(EXPORT_SMS, true) set(exportSms) = prefs.edit().putBoolean(EXPORT_SMS, exportSms).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 4db9a2ad..3bade2ac 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt @@ -25,10 +25,13 @@ const val SEND_LONG_MESSAGE_MMS = "send_long_message_mms" const val SEND_GROUP_MESSAGE_MMS = "send_group_message_mms" const val MMS_FILE_SIZE_LIMIT = "mms_file_size_limit" const val PINNED_CONVERSATIONS = "pinned_conversations" +const val BLOCKED_KEYWORDS = "blocked_keywords" const val EXPORT_SMS = "export_sms" const val EXPORT_MMS = "export_mms" -const val EXPORT_MIME_TYPE = "application/json" -const val EXPORT_FILE_EXT = ".json" +const val JSON_FILE_EXTENSION = ".json" +const val JSON_MIME_TYPE = "application/json" +const val XML_MIME_TYPE = "text/xml" +const val TXT_MIME_TYPE = "text/plain" const val IMPORT_SMS = "import_sms" const val IMPORT_MMS = "import_mms" const val WAS_DB_CLEARED = "was_db_cleared_2" diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/MessagesImporter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/MessagesImporter.kt index c5020e31..149c9489 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/MessagesImporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/MessagesImporter.kt @@ -6,6 +6,7 @@ import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.smsmessenger.extensions.config import com.simplemobiletools.smsmessenger.models.* + class MessagesImporter(private val context: Context) { private val messageWriter = MessagesWriter(context) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/MessagesReader.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/MessagesReader.kt index fbf164c5..809e3325 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/MessagesReader.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/MessagesReader.kt @@ -58,7 +58,6 @@ class MessagesReader(private val context: Context) { smsList.add(SmsBackup(subscriptionId, address, body, date, dateSent, locked, protocol, read, status, type, serviceCenter)) } } - return smsList } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt index 8816d2d8..d4f6de58 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/Message.kt @@ -18,6 +18,7 @@ data class Message( @ColumnInfo(name = "thread_id") val threadId: Long, @ColumnInfo(name = "is_mms") val isMMS: Boolean, @ColumnInfo(name = "attachment") val attachment: MessageAttachment?, + @ColumnInfo(name = "sender_phone_number") val senderPhoneNumber: String, @ColumnInfo(name = "sender_name") var senderName: String, @ColumnInfo(name = "sender_photo_uri") val senderPhotoUri: String, @ColumnInfo(name = "subscription_id") var subscriptionId: Int, @@ -28,6 +29,11 @@ data class Message( fun millis() = date * 1000L + fun getSender(): SimpleContact? = + participants.firstOrNull { it.doesHavePhoneNumber(senderPhoneNumber) } + ?: participants.firstOrNull { it.name == senderName } + ?: participants.firstOrNull() + companion object { fun getStableId(message: Message): Long { @@ -37,6 +43,7 @@ data class Message( result = 31 * result + message.threadId.hashCode() result = 31 * result + message.isMMS.hashCode() result = 31 * result + (message.attachment?.hashCode() ?: 0) + result = 31 * result + message.senderPhoneNumber.hashCode() result = 31 * result + message.senderName.hashCode() result = 31 * result + message.senderPhotoUri.hashCode() result = 31 * result + message.isScheduled.hashCode() @@ -53,6 +60,7 @@ data class Message( old.date == new.date && old.isMMS == new.isMMS && old.attachment == new.attachment && + old.senderPhoneNumber == new.senderPhoneNumber && old.senderName == new.senderName && old.senderPhotoUri == new.senderPhotoUri && old.isScheduled == new.isScheduled diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt index d38c4161..d04aaee1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/DirectReplyReceiver.kt @@ -37,13 +37,15 @@ class DirectReplyReceiver : BroadcastReceiver() { } ensureBackgroundThread { - var messageId: Long = 0L + var messageId = 0L try { context.sendMessageCompat(body, listOf(address), subscriptionId, emptyList()) val message = context.getMessages(threadId, getImageResolutions = false, includeScheduledMessages = false, limit = 1).lastOrNull() if (message != null) { context.messagesDB.insertOrUpdate(message) messageId = message.id + + context.updateLastConversationMessage(threadId) } } catch (e: Exception) { context.showErrorToast(e) diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt index 13c28e59..8fdab1ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/MmsReceiver.kt @@ -5,6 +5,7 @@ import android.net.Uri import android.os.Handler import android.os.Looper import com.bumptech.glide.Glide +import com.klinker.android.send_message.MmsReceivedReceiver import com.simplemobiletools.commons.extensions.isNumberBlocked import com.simplemobiletools.commons.extensions.normalizePhoneNumber import com.simplemobiletools.commons.helpers.ensureBackgroundThread @@ -13,7 +14,7 @@ import com.simplemobiletools.smsmessenger.extensions.* import com.simplemobiletools.smsmessenger.helpers.refreshMessages // more info at https://github.com/klinker41/android-smsmms -class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { +class MmsReceiver : MmsReceivedReceiver() { override fun isAddressBlocked(context: Context, address: String): Boolean { val normalizedAddress = address.normalizePhoneNumber() @@ -22,7 +23,7 @@ class MmsReceiver : com.klinker.android.send_message.MmsReceivedReceiver() { override fun onMessageReceived(context: Context, messageUri: Uri) { val mms = context.getLatestMMS() ?: return - val address = mms.participants.firstOrNull()?.phoneNumbers?.first()?.normalizedNumber ?: "" + val address = mms.getSender()?.phoneNumbers?.first()?.normalizedNumber ?: "" val size = context.resources.getDimension(R.dimen.notification_large_icon_size).toInt() ensureBackgroundThread { diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt index 9b29db93..418a5cda 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/receivers/SmsReceiver.kt @@ -55,8 +55,21 @@ class SmsReceiver : BroadcastReceiver() { } private fun handleMessage( - context: Context, address: String, subject: String, body: String, date: Long, read: Int, threadId: Long, type: Int, subscriptionId: Int, status: Int + context: Context, + address: String, + subject: String, + body: String, + date: Long, + read: Int, + threadId: Long, + type: Int, + subscriptionId: Int, + status: Int ) { + if (isMessageFilteredOut(context, body)) { + return + } + val photoUri = SimpleContactsHelper(context).getPhotoUriFromPhoneNumber(address) val bitmap = context.getNotificationBitmap(photoUri) Handler(Looper.getMainLooper()).post { @@ -83,7 +96,22 @@ class SmsReceiver : BroadcastReceiver() { val messageDate = (date / 1000).toInt() val message = - Message(newMessageId, body, type, status, participants, messageDate, false, threadId, false, null, senderName, photoUri, subscriptionId) + Message( + newMessageId, + body, + type, + status, + participants, + messageDate, + false, + threadId, + false, + null, + address, + senderName, + photoUri, + subscriptionId + ) context.messagesDB.insertOrUpdate(message) refreshMessages() context.showReceivedMessageNotification(newMessageId, address, body, threadId, bitmap) @@ -91,4 +119,14 @@ class SmsReceiver : BroadcastReceiver() { } } } + + private fun isMessageFilteredOut(context: Context, body: String): Boolean { + for (blockedKeyword in context.config.blockedKeywords) { + if (body.contains(blockedKeyword, ignoreCase = true)) { + return true + } + } + + return false + } } diff --git a/app/src/main/res/layout/activity_manage_blocked_keywords.xml b/app/src/main/res/layout/activity_manage_blocked_keywords.xml new file mode 100644 index 00000000..c5ca8a11 --- /dev/null +++ b/app/src/main/res/layout/activity_manage_blocked_keywords.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 154f95f9..8d733d2c 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -146,6 +146,21 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_message_details.xml b/app/src/main/res/layout/dialog_message_details.xml new file mode 100644 index 00000000..13b68aaf --- /dev/null +++ b/app/src/main/res/layout/dialog_message_details.xml @@ -0,0 +1,12 @@ + + diff --git a/app/src/main/res/layout/item_manage_blocked_keyword.xml b/app/src/main/res/layout/item_manage_blocked_keyword.xml new file mode 100644 index 00000000..269a6c79 --- /dev/null +++ b/app/src/main/res/layout/item_manage_blocked_keyword.xml @@ -0,0 +1,37 @@ + + + + + + + + + + diff --git a/app/src/main/res/menu/cab_blocked_keywords.xml b/app/src/main/res/menu/cab_blocked_keywords.xml new file mode 100644 index 00000000..6b366308 --- /dev/null +++ b/app/src/main/res/menu/cab_blocked_keywords.xml @@ -0,0 +1,14 @@ + + + + + diff --git a/app/src/main/res/menu/cab_thread.xml b/app/src/main/res/menu/cab_thread.xml index 2d4351e9..a1150743 100644 --- a/app/src/main/res/menu/cab_thread.xml +++ b/app/src/main/res/menu/cab_thread.xml @@ -26,6 +26,11 @@ android:icon="@drawable/ic_save_vector" android:title="@string/save_as" app:showAsAction="ifRoom" /> + + + + diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 9c2555fc..cbe994ba 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -50,6 +50,12 @@ استمر في تشغيل الهاتف وتأكد من عدم وجود شيء يقتل التطبيق أثناء وجوده في الخلفية. Update message ارسل الان + + Message details + المرسل + المتلقي + أرسلت في + تلقيت في تم تلقي الرسائل القصيرة رسالة جديدة @@ -77,6 +83,11 @@ %d رسائل + الكلمة الرئيسية + الكلمات الرئيسية المحظورة + إدارة الكلمات الرئيسية المحظورة + أنت لا تحظر أي كلمات رئيسية. يمكنك إضافة كلمات رئيسية هنا لمنع جميع الرسائل التي تحتوي عليها. + أضف كلمة أساسية محظورة رؤية اشعارات شاشة القفل المرسل والرسالة المرسل فقط diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 669639ec..46520b7e 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS New message @@ -65,6 +71,11 @@ %d messages + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sender and message Sender only diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 80dabae2..f5817d89 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -48,6 +48,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Атрымана паведамленне Новае паведамленне @@ -71,6 +77,11 @@ %d паведамленняў + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Паказ апавяшчэнняў на экране блакавання Адпраўнік і паведамленне Толькі адпраўнік diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index 50d6c913..74c3f518 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -21,31 +21,37 @@ Препращане Невъзможно е да се компресира изображението до избрания размер - Duplicate item was not included + Дублиращият се елемент не беше включен - and %d other - and %d others + и %d друг + и %d други Нов разговор Добавете контакт или номер… Предложения - Members - Conversation name - Conversation details - Rename conversation - Only you can see this conversation name + Членове + Име на разговора + Подробности за разговора + Преименуване на разговора + Само вие можете да видите името на този разговор - Scheduled message - Schedule message - Schedule send - Cancel schedule send - You must pick a time in the future - Keep the phone on and make sure there is nothing killing the app while in background. + Насрочено съобщение + Насрочи съобщение по график + Планирайте изпращане + Отмяна на насрочено изпращане + Трябва да изберете време в бъдещето + Дръжте телефона включен и се уверете, че нищо не убива приложението, докато е във фонов режим. Update message - Send now + Изпрати Сега + + Message details + Подател + Получател + Изпратено на + Получено на Получено съобщение Ново съобщение @@ -65,12 +71,17 @@ %d съобщения + Ключова дума + Блокирани ключови думи + Управление на блокираните ключови думи + Не са блокирани ключови думи. Можете да добавите ключови думи тук, за да блокирате всички съобщения, които ги съдържат. + Добавяне на блокирана ключова дума Видимост на известие за съобщение при заключен екран Изпращач и съобщение Само изпращач Включи отчети за доставка Премахни ударенията и диактричните знаци при изпращане на съобщение - Send message on pressing Enter + Изпратете съобщение при натискане на Enter Промяна на размера на изпратените MMS изображения Без ограничения Изходящи съобщения @@ -86,25 +97,25 @@ Импортиране на MMS Трябва да изберете поне един елемент - Can\'t send message to an empty number - Unable to save message to the telephony database - Couldn\'t send message, service unavailable - Couldn\'t send message, radio turned off - Couldn\'t send message, carrier error - Couldn\'t send message, error code: %1$d - Can\'t reply to short codes like this - You can only reply to short codes with numbers like \"503501\" but not to codes containing letters and numbers like \"AB-CD0\". - Attachment size exceeds max MMS limit - SIM card not available + Не може да се изпрати съобщение до празен номер + Неуспешен запис на съобщението в телефонната база данни + Неуспешно изпращане на съобщението, услугата на оператора е недостъпна + Неуспешно изпращане на съобщението, радиото е изключено + Неуспешно изпращане на съобщението, грешка на оператора + Неуспешно изпращане на съобщението, код на грешката: %d + Невъзможен отговор на кратки кодове като този + Можете да отговаряте само на кратки кодове с цифри като \"503501\", но не и на кодове, съдържащи букви и цифри като \"AB-CD0\". + Размерът на прикачения файл надвишава максималното ограничение за MMS + SIM картата не е налична Защо приложението изисква достъп до интернет\? За съжаление това е нужно за изпращане на прикачени MMS. Да не може да се праща MMS би било наистина голям недостатък в сравнение с други приложения, така че решихме да тръгнем по този път. Въпреки това, както обикновено, няма реклами, следене или каквито и да е други анализаторски програми, интернетът се ползва само за изпращане на MMS. От другата страна не получават моя MMS, мога ли да направя нещо\? Размерът на MMS е ограничен от оператора, може да се опитате да зададете по-малък лимит в настройките на приложението. - Does the app support scheduled messages? - Yes, you can schedule messages to be sent in the future by long pressing the Send button and picking the desired date and time. + Приложението поддържа ли планирани съобщения\? + Да, можете да планирате изпращане на съобщения в бъдеще, като натиснете продължително бутона Изпрати и изберете желаната дата и час. - + \ No newline at end of file diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 18e938e5..a7cdf863 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -46,6 +46,12 @@ Mantingueu el telèfon engegat i assegureu-vos que no hi hagi res que mati les aplicacions en segon pla. Update message Envia ara + + Message details + Remitent + Receptor + Enviat a + Rebut a SMS rebut Missatge nou @@ -65,6 +71,11 @@ %d missatges + Paraula clau + Paraules clau blocades + Gestiona les paraules clau blocades + No heu blocat cap paraula clau. Aquí podeu afegir paraules clau per a bolcar tots els missatges que les continguin. + Afegeix una paraula clau blocada Visibilitat de notificacions a la pantalla de bloqueig Remitent i missatge Només el remitent diff --git a/app/src/main/res/values-cr/strings.xml b/app/src/main/res/values-cr/strings.xml index 669639ec..46520b7e 100644 --- a/app/src/main/res/values-cr/strings.xml +++ b/app/src/main/res/values-cr/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS New message @@ -65,6 +71,11 @@ %d messages + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sender and message Sender only diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 56ee7077..36b3c2aa 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -47,6 +47,12 @@ Ponechte telefon zapnutý a ujistěte se, že nic nezabije aplikaci běžící na pozadí. Update message Odeslat nyní + + Message details + Sender + Receiver + Sent at + Received at Přijaté SMS Nová zpráva @@ -68,6 +74,11 @@ %d zpráv + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Viditelnost upozornění na uzamčené obrazovce Odesílatel a zpráva Pouze odesílatel @@ -110,4 +121,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index a7b1a837..b6c51698 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Modtag SMS Ny Besked @@ -65,6 +71,11 @@ %d beskeder + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Synlighed af meddelelse på låseskærmen Afsender og meddelelse Kun afsender diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index dd571c63..aca584c8 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -46,6 +46,12 @@ Lassen Sie das Telefon eingeschaltet und vergewissern Sie sich, dass die Anwendung im Hintergrund nicht abgeschaltet wird. Nachricht aktualisieren Jetzt senden + + Message details + Sender + Receiver + Sent at + Received at Empfangene SMS Neue Nachricht @@ -65,6 +71,11 @@ %d Nachrichten + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Sichtbarkeit von Benachrichtigungen auf dem Sperrbildschirm Absender und Nachricht Nur Absender @@ -107,4 +118,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 5e613921..8ce3943e 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -46,6 +46,12 @@ Κρατήστε το τηλέφωνο ανοιχτό και βεβαιωθείτε ότι δεν υπάρχει τίποτα που να κλείνει την εφαρμογή ενώ βρίσκεται στο παρασκήνιο. Ενημέρωση μηνύματος Αποστολή τώρα + + Λεπτομέρειες μηνύματος + Αποστολέας + Παραλήπτης + Εστάλη στις + Ελήφθη στις Ελήφθη SMS Νέο μήνυμα @@ -65,6 +71,11 @@ %d μηνύματα + Λέξη-κλειδί + Αποκλεισμένες λέξεις-κλειδιά + Διαχείριση αποκλεισμένων λέξεων-κλειδιών + Δεν αποκλείετε καμία λέξη-κλειδί. Μπορείτε να προσθέσετε λέξεις-κλειδιά εδώ για να αποκλείσετε όλα τα μηνύματα που τα περιέχουν. + Προσθέστε μια αποκλεισμένη λέξη-κλειδί Εμφάνιση ειδοπ/σεων σε Κλειδωμένη οθόνη Αποστολέας και μήνυμα Αποστολέας μόνο diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index 1f3ce244..50f84e7f 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS Nova mesaĝo @@ -65,6 +71,11 @@ %d mesaĝoj + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sendinto kaj mesaĝo Nur sendinto diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f4b25568..54447449 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -47,6 +47,12 @@ Mantenga el teléfono encendido y asegúrese de que no hay nada que mate la aplicación en segundo plano. Actualizar mensaje Enviar ahora + + Message details + Sender + Receiver + Sent at + Received at Mensaje recibido Nuevo mensaje @@ -68,6 +74,11 @@ %d mensajes + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Visibilidad de las notificaciones en la pantalla de bloqueo Remitente y mensaje Solamente el remitente @@ -110,4 +121,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index d23562ae..82de861e 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -46,6 +46,12 @@ Vaata, et telefon oleks sisse lülitatud ja mitte miski ei katkestaks selle rakenduse tööd taustal. Update message Saada kohe + + Message details + Sender + Receiver + Sent at + Received at Vastuvõetud SMS Uus sõnum @@ -65,6 +71,11 @@ %d sõnumeid + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Teavituse nähtavus lukustusvaates Saatja ja sõnum Ainult saatja @@ -107,4 +118,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 5912ef49..b25da433 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -46,6 +46,12 @@ Pidä puhelin päällä ja varmista, ettei sovellusta lopeteta taustalla. Päivitä viesti Lähetä nyt + + Message details + Sender + Receiver + Sent at + Received at Vastaanotettu tekstiviesti Uusi viesti @@ -65,6 +71,11 @@ %d viestiä + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lukitusnäytön ilmoitusten näkyvyys Lähettäjä ja viesti Vain lähettäjä @@ -107,4 +118,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 361ffcd5..38204415 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -47,6 +47,12 @@ Gardez le téléphone allumé et assurez-vous que l\'application ne soit pas fermée en arrière-plan. Mettre à jour le message Envoyer maintenant + + Message details + Sender + Receiver + Sent at + Received at SMS reçu Nouveau message @@ -68,6 +74,11 @@ %d messages + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Visibilité des notifications sur l\'écran de verrouillage Expéditeur et message Expéditeur uniquement @@ -110,4 +121,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 135b326d..070c72c8 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -46,6 +46,12 @@ Mantén o teléfono acendido e asegúrate de que non hai nada que mate a aplicación en segundo plano. Update message Enviar agora + + Message details + Sender + Receiver + Sent at + Received at SMS recibida Nova mensaxe @@ -65,6 +71,11 @@ %d mensaxes + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Visibilidade das notificacións na pantalla de bloqueo Remitente e mensaxe Só remitente @@ -107,4 +118,4 @@ Non atopaches algunhas cadeas? Hai máis en https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 669639ec..46520b7e 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS New message @@ -65,6 +71,11 @@ %d messages + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sender and message Sender only diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 4adf51bd..476f985c 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -47,6 +47,12 @@ Ostavi telefon uključen i provjeri da ništa ne prekida rad aplikacije kada je u pozadini. Ažuriraj poruku Pošalji sada + + Pojedinosti poruke + Šalje + Prima + Poslano + Primljeno Primljene SMS poruke Nova poruka @@ -68,6 +74,11 @@ %d poruka + Riječ + Blokirane riječi + Upravljanje blokiranim riječima + Ne blokirate niti jednu riječ. Ovdje možete dodati riječi kako biste blokirali poruke koje ih sadrže. + Dodaj blokiranu riječ Zaključaj vidljivost ekranskih obavijesti Pošiljatelj u poruka Samo pošiljatelj @@ -110,4 +121,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 5d03b980..0b4a7b4d 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -46,6 +46,12 @@ Tartsa bekapcsolva a telefont, és győződjön meg róla, hogy semmi sem lövi ki az alkalmazást a háttérben. Üzenet frissítése Küldés most + + Message details + Sender + Receiver + Sent at + Received at SMS fogadva Új üzenet @@ -65,6 +71,11 @@ %d üzeneteket + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Értesítés láthatósága zárolt képernyőnél Feladó és üzenet Csak a feladó diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index dd1e2656..9b1fa5c7 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -45,6 +45,12 @@ Tetap nyalakan ponsel dan pastikan tidak ada apa pun yang menutup aplikasi selagi di latar belakang. Update message Kirim sekarang + + Message details + Sender + Receiver + Sent at + Received at Menerima SMS Pesan baru @@ -62,6 +68,11 @@ %d pesan + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Keterlihatan notifikasi layar kunci Pengirim dan pesan Hanya pengirim diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 5b0d3463..650816de 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS New message @@ -65,6 +71,11 @@ %d messages + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sender and message Sender only diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index f7e8ea3a..59d5c284 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -47,6 +47,12 @@ Tieni il telefono acceso e assicurati che non ci sia nulla che chiuda l\'app in background. Update message Invia ora + + Message details + Sender + Receiver + Sent at + Received at SMS ricevuto Nuovo messaggio @@ -68,6 +74,11 @@ %d messaggi + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Visibilità schermata di blocco Mittente e messaggio Solo mittente @@ -110,4 +121,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index 895a9030..5c4dd745 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -48,6 +48,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at קבלת סמס הודעה חדשה @@ -71,6 +77,11 @@ %d הודעות + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword נראות התראות מסך נעילה שולח והודעה השולח בלבד diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index b9a84b7b..3e23d7be 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -45,6 +45,12 @@ 端末の電源を入れたままにしつつ、アプリがバックグラウンドで強制終了されないようにしてください(バッテリー節約設定からこのアプリを除外してください)。 メッセージを更新 今すぐ送信 + + Message details + Sender + Receiver + Sent at + Received at 受信した SMS 新しいメッセージ @@ -62,6 +68,11 @@ %d 件のメッセージ + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword ロック画面の通知表示 差出人とメッセージ 差出人のみ diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 3d01d8c4..bb43c6e9 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -47,6 +47,12 @@ Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Gautos žinutės Nauja žinutė @@ -67,6 +73,11 @@ %d žinutės + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Užrakinto ekrano pranešimų matomumas Siuntėjas ir pranešimas Tik siuntėjas diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index 76c5d375..e3eb6292 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -47,6 +47,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS New message @@ -68,6 +74,11 @@ %d messages + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sender and message Sender only diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index 669639ec..46520b7e 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS New message @@ -65,6 +71,11 @@ %d messages + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sender and message Sender only diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index c78c857a..bea56ea1 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -46,6 +46,12 @@ ഫോൺ ഓണാക്കി ബാക്ക്ഗ്രൗണ്ടിൽ ആയിരിക്കുമ്പോൾ ആപ്പിനെ നശിപ്പിക്കുന്ന ഒന്നും ഇല്ലെന്ന് ഉറപ്പാക്കുക. Update message ഇപ്പോൾ അയയ്ക്കുക + + Message details + Sender + Receiver + Sent at + Received at SMS ലഭിച്ചു പുതിയ മെസ്സേജ് @@ -65,6 +71,11 @@ %d സന്ദേശങ്ങൾ + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword ലോക്ക് സ്ക്രീൻ അറിയിപ്പ് ദൃശ്യപരത അയച്ചയാളും സന്ദേശവും അയയ്ക്കുന്നയാൾ മാത്രം diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 9157790c..92123394 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -46,6 +46,12 @@ Ha telefonen påslått og forsikre deg at appen ikke blir terminert mens den er i bakgrunnen. Oppdater melding Send nå + + Message details + Sender + Receiver + Sent at + Received at Mottatt SMS Ny melding @@ -65,6 +71,11 @@ %d meldinger + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Synlighet for låseskjermvarsling Avsender og melding Kun avsender @@ -107,4 +118,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 44f2cf5d..22a331d1 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -46,6 +46,12 @@ Zorg ervoor dat het toestel blijft ingeschakeld en dat de app niet op de achtergrond wordt afgesloten. Bericht aanpassen Nu versturen + + Details + Afzender + Ontvanger + Verzonden op + Ontvangen op Ontvangen berichten Nieuw bericht @@ -65,6 +71,11 @@ %d berichten + Trefwoord + Geblokkeerde woorden + Geblokkeerde woorden beheren + Er worden geen woorden geblokkeerd. Voeg hier trefwoorden toe om alle berichten die deze woorden bevatten te blokkeren. + Geblokkeerd woord toevoegen Meldingen op vergrendelscherm Afzender en bericht Alleen afzender @@ -91,7 +102,7 @@ Kon het bericht niet verzenden: geen bereik Kon het bericht niet verzenden: vliegtuigmodus Kon het bericht niet verzenden: netwerkfout - Kon het bericht niet verzenden: foutcode %1$d + Kon het bericht niet verzenden: foutcode %d Er kan niet gereageerd worden op korte codes zoals deze Er kan alleen worden gereageerd op korte codes met cijfers, zoals \"503501\", maar niet op codes met letters en cijfers, zoals \"AB-CD0\". De bestandsgrootte van de bijlage overschrijdt de limiet voor MMS @@ -101,8 +112,8 @@ Dit is helaas nodig voor het verzenden van MMS-bijlagen. Het versturen van MMS-berichten onmogelijk maken zou een te groot nadeel t.o.v. andere apps betekenen en daarom hebben we besloten om het toch toe te voegen. Zoals gewoonlijk bevat de app echter geen advertenties, tracking of analytics; de verbinding wordt alleen maar gebruikt voor het versturen van MMS-berichten. Mijn MMS-berichten worden niet ontvangen, is er iets wat ik daaraan kan doen\? Providers limiteren de grootte van MMS-berichten. Probeer in de instellingen de limiet voor de afbeeldingsgrootte te verlagen. - Does the app support scheduled messages? - Yes, you can schedule messages to be sent in the future by long pressing the Send button and picking the desired date and time. + Ondersteunt deze app het inplannen van berichten\? + Ja, berichten kunnen vertraagd verzonden worden door lang te drukken op de verzendknop en vervolgens een tijdstip voor verzending op te geven. + Message details + Sender + Receiver + Sent at + Received at سنیہا لیا گیا نواں سنیہا @@ -65,6 +71,11 @@ %d سنیہے + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility بھیجݨ والا تے سنیہا صرف بھیجݨ والا diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 8d26cff7..1b2e5817 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -48,6 +48,12 @@ Pozostaw telefon włączony i upewnij się, że nic nie wyłącza aplikacji w tle. Zaktualizuj wiadomość Wyślij teraz + + Szczegóły wiadomości + Nadawca + Odbiorca + Wysłana + Odebrana Otrzymany SMS Nowa wiadomość @@ -71,6 +77,11 @@ %d wiadomości + Słowo kluczowe + Zablokowane słowa kluczowe + Zarządzaj zablokowanymi słowami kluczowymi + Nie blokujesz żadnych słów kluczowych. Możesz dodać tutaj słowa kluczowe, aby blokować wszystkie wiadomości je zawierające. + Dodaj słowo kluczowe do blokowania Widoczność powiadomień na ekranie blokady Nadawca i treść Tylko nadawca diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 372f162d..2e7a6122 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -47,6 +47,12 @@ Mantenha o telefone ligado e certifique-se de que não haja nada matando o aplicativo enquanto estiver em segundo plano. Update message Enviar agora + + Message details + Sender + Receiver + Sent at + Received at SMS recebido Nova mensagem @@ -68,6 +74,11 @@ %d mensagens + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Visibilidade de notificação na tela de bloqueio Remetente e mensagem Apenas remetente @@ -110,4 +121,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index dac33dd8..58bddea5 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -47,6 +47,12 @@ Mantenha o telefone ligado e verifique se não há nada que esteja a bloquear a aplicação em segundo plano. Atualizar mensagem Enviar agora + + Message details + Sender + Receiver + Sent at + Received at SMS recebida Nova mensagem @@ -68,6 +74,11 @@ %d mensagens + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Notificação no ecrã de bloqueio Remetente e mensagem Apenas remetente @@ -110,4 +121,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index d32f3591..7e3adc3e 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -47,6 +47,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at SMS-uri primite Mesaj nou @@ -68,6 +74,11 @@ %d mesaje + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Vizibilitatea notificării pe ecranul de blocare Expeditor şi mesaj Doar expeditorul diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 3371657d..f289dd76 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -48,6 +48,12 @@ Держите устройство включённым и убедитесь, что ничто не завершает принудительно приложение в фоновом режиме. Обновить сообщение Отправить сейчас + + Сведения о сообщении + Отправитель + Получатель + Отправлено в + Получено в Получено сообщение Новое сообщение @@ -71,6 +77,11 @@ %d сообщений + Ключевое слово + Блокируемые ключевые слова + Управление блокируемыми ключевыми словами + Сейчас блокировка по ключевым словам не выполняется. Здесь можно указать ключевые слова, чтобы заблокировать все содержащиие их сообщения. + Добавить блокируемое ключевое слово Отображение уведомлений на экране блокировки Отправитель и сообщение Только отправитель diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index b2f9477e..57609a4e 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -47,6 +47,12 @@ Majte zapnuté zariadenie a uistite sa, že apku na pozadí nič nevypne. Upraviť správu Odoslať teraz + + Detaily správy + Odosielateľ + Prijímateľ + Odoslané + Prijaté Prijatá SMS Nová správa @@ -68,6 +74,11 @@ %d správ + Kľúčové slovo + Blokované kľúčové slová + Spravovať blokované kľúčové slová + Nie sú blokované žiadne kľúčové slová. Môžete nejaké pridať, tým zablokujete všetky správy, ktoré tieto slova budú obsahovať. + Pridať blokované kľúčové slovo Viditeľnosť pripomienky na uzavretej obrazovke Odosielateľ a správa Iba odosielateľ diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index bc55f5fc..3659fbed 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -48,6 +48,12 @@ Telefon vklopite in poskrbite, da bo aplikacija v ozadju delovala. Update message Sedaj pošlji + + Message details + Sender + Receiver + Sent at + Received at Prejeto SMS sporočilo Novo sporočilo @@ -71,6 +77,11 @@ %d sporočil + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Vidnost obvestil na zaklenjenem zaslonu Pošiljatelj in sporočilo Samo pošiljatelj diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 771e9cc0..23ab0c22 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -47,6 +47,12 @@ Држите телефон укључен и уверите се да ништа не убија апликацију док је у позадини. Ажурирајте поруку Пошаљи одмах + + Детаљи о поруци + Шалје + Прима + Послано + Примлјено Примите СМС Нова порука @@ -68,6 +74,11 @@ %d порукe + Ријеч + Блокиране ријечи + Управљање блокираним ријечима + Не блокирате ни једну ријеч. Овдје можете додати ријечи како бисте блокирали све поруке које их садрже. + Додај блокирану ријеч. Видљивост обавештења на закључаном екрану Пошиљалац и порука Само пошиљалац diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 5a722d79..ba1337e6 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -46,6 +46,12 @@ Ha telefonen påslagen och kontrollera att inget avslutar appen i bakgrunden. Uppdatera meddelande Skicka nu + + Message details + Sender + Receiver + Sent at + Received at Tog emot sms Nytt meddelande @@ -65,6 +71,11 @@ %d meddelanden + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Synlighet för aviseringar på låsskärmen Avsändare och meddelande Endast avsändare @@ -107,4 +118,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 1029c6d4..4fd6fe22 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at SMS கிடைத்தது புதிய செய்தி @@ -65,6 +71,11 @@ %d செய்திகள் + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword பூட்டுத் திரை அறிவிப்புத் தெரிவுநிலை அனுப்புநர் மற்றும் செய்தி அனுப்புநர் மட்டும் diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 9a1916d2..5b53abfb 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -45,6 +45,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS New message @@ -62,6 +68,11 @@ %d message + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sender and message Sender only diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 650aa34a..f2183dab 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -46,6 +46,12 @@ Telefonu açık tutun ve arka planda uygulamayı sonlandıran hiçbir şey olmadığından emin olun. İletiyi güncelle Şimdi gönder + + Message details + Gönderen + Alıcı + Gönderildi + Alındı SMS alındı Yeni ileti @@ -65,6 +71,11 @@ %d ileti + Anahtar sözcük + Engellenen anahtar sözcükler + Engellenen anahtar sözcükleri yönet + Herhangi bir anahtar sözcük engellemiyorsunuz. Bunları içeren tüm mesajları engellemek için buraya anahtar sözcükler ekleyebilirsiniz. + Engellenen anahtar sözcük ekle Kilit ekranı bildirim görünürlüğü Gönderen ve ileti Yalnızca gönderen diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 734c22a2..4555c127 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -48,6 +48,12 @@ Тримайте телефон увімкненим і переконайтеся, що ніщо не завершує застосунок у фоновому режимі. Update message Надіслати зараз + + Message details + Sender + Receiver + Sent at + Received at Отримано повідомлення Нове повідомлення @@ -71,6 +77,11 @@ %d повідомлень + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Видимість сповіщень на екрані блокування Відправник і повідомлення Лише відправник @@ -113,4 +124,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 6a035913..b1e6a241 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -45,6 +45,12 @@ 保持手机开机,并确保应用后台不被终止. 更新消息 立即发送 + + 消息详情 + 发送者 + 接收者 + 发送于 + 接收于 接收到的短信 新消息 @@ -62,6 +68,11 @@ %d 个消息 + 关键词 + 关键词黑名单 + 管理关键词黑名单 + 你没有拦截任何关键词。你可以在此添加关键词来拦截包含它们的所有信息。 + 添加拦截关键词 锁屏通知可见性 发信人和消息 仅发信人 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 012d4194..add8c8d2 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -45,6 +45,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at 收到的簡訊 新訊息 @@ -62,6 +68,11 @@ %d 則訊息 + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword 鎖定畫面通知顯示 Sender and message Sender only diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index cfc80cca..687d1e68 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -10,6 +10,7 @@ 2MB SMS MMS + SIM Allow scheduling messages by long pressing the Send button diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0e2a271f..94af3996 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -46,6 +46,12 @@ Keep the phone on and make sure there is nothing killing the app while in background. Update message Send now + + Message details + Sender + Receiver + Sent at + Received at Received SMS New message @@ -65,6 +71,11 @@ %d messages + Keyword + Blocked keywords + Manage blocked keywords + You are not blocking any keywords. You may add keywords here to block all messages containing them. + Add a blocked keyword Lock screen notification visibility Sender and message Sender only