14
CHANGELOG.md
|
@ -1,6 +1,20 @@
|
|||
Changelog
|
||||
==========
|
||||
|
||||
Version 6.1.2 *(2018-12-28)*
|
||||
----------------------------
|
||||
|
||||
* Improve the way contacts are fetched, more contacts should show up
|
||||
* Improve contact filtering to fix some glitches
|
||||
* Added a Call menu button for calling not stored numbers from Recents
|
||||
* Some stability improvements
|
||||
|
||||
Version 6.1.1 *(2018-12-12)*
|
||||
----------------------------
|
||||
|
||||
* Fixing a crash on Android Lollipop
|
||||
* Added some translation improvements
|
||||
|
||||
Version 6.1.0 *(2018-11-30)*
|
||||
----------------------------
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@ android {
|
|||
applicationId "com.simplemobiletools.contacts.pro"
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 28
|
||||
versionCode 37
|
||||
versionName "6.1.0"
|
||||
versionCode 39
|
||||
versionName "6.1.2"
|
||||
setProperty("archivesBaseName", "contacts")
|
||||
}
|
||||
|
||||
|
@ -51,9 +51,9 @@ android {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.simplemobiletools:commons:5.5.1'
|
||||
implementation 'com.simplemobiletools:commons:5.6.2'
|
||||
implementation 'joda-time:joda-time:2.10.1'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3'
|
||||
implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.4'
|
||||
|
||||
kapt "androidx.room:room-compiler:2.0.0"
|
||||
|
|
|
@ -55,7 +55,7 @@ class DialpadActivity : SimpleActivity() {
|
|||
ContactsHelper(this).getContacts { gotContacts(it) }
|
||||
disableKeyboardPopping()
|
||||
|
||||
val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_big, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE)
|
||||
val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_huge, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE)
|
||||
dialpad_call_button.setImageDrawable(callIcon)
|
||||
dialpad_call_button.background.applyColorFilter(getAdjustedPrimaryColor())
|
||||
}
|
||||
|
|
|
@ -568,15 +568,19 @@ class EditContactActivity : ContactActivity() {
|
|||
}
|
||||
|
||||
private fun setupContactSource() {
|
||||
contact_source.text = getPublicContactSource(contact!!.source)
|
||||
originalContactSource = contact!!.source
|
||||
getPublicContactSource(contact!!.source) {
|
||||
contact_source.text = it
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupNewContact() {
|
||||
supportActionBar?.title = resources.getString(R.string.new_contact)
|
||||
originalContactSource = if (hasContactPermissions()) config.lastUsedContactSource else SMT_PRIVATE
|
||||
contact = getEmptyContact()
|
||||
contact_source.text = getPublicContactSource(contact!!.source)
|
||||
getPublicContactSource(contact!!.source) {
|
||||
contact_source.text = it
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupTypePickers() {
|
||||
|
@ -831,7 +835,9 @@ class EditContactActivity : ContactActivity() {
|
|||
private fun showSelectContactSourceDialog() {
|
||||
showContactSourcePicker(contact!!.source) {
|
||||
contact!!.source = if (it == getString(R.string.phone_storage_hidden)) SMT_PRIVATE else it
|
||||
contact_source.text = getPublicContactSource(it)
|
||||
getPublicContactSource(it) {
|
||||
contact_source.text = it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -191,7 +191,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||
menu.apply {
|
||||
findItem(R.id.search).isVisible = currentFragment != groups_fragment && currentFragment != recents_fragment
|
||||
findItem(R.id.sort).isVisible = currentFragment != groups_fragment && currentFragment != recents_fragment
|
||||
findItem(R.id.filter).isVisible = currentFragment != groups_fragment
|
||||
findItem(R.id.filter).isVisible = currentFragment != groups_fragment && currentFragment != recents_fragment
|
||||
}
|
||||
setupSearch(menu)
|
||||
return true
|
||||
|
@ -495,7 +495,8 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||
|
||||
val faqItems = arrayListOf(
|
||||
FAQItem(R.string.faq_1_title, R.string.faq_1_text),
|
||||
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons)
|
||||
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),
|
||||
FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons)
|
||||
)
|
||||
|
||||
startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true)
|
||||
|
@ -585,6 +586,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||
add(Release(31, R.string.release_31))
|
||||
add(Release(32, R.string.release_32))
|
||||
add(Release(34, R.string.release_34))
|
||||
add(Release(39, R.string.release_39))
|
||||
checkWhatsNew(this, BuildConfig.VERSION_CODE)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import android.content.Intent
|
|||
import android.os.Build
|
||||
import android.telecom.TelecomManager
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.toast
|
||||
import com.simplemobiletools.contacts.pro.R
|
||||
import com.simplemobiletools.contacts.pro.helpers.KEY_PHONE
|
||||
import com.simplemobiletools.contacts.pro.helpers.REQUEST_CODE_SET_DEFAULT_DIALER
|
||||
|
@ -54,7 +55,12 @@ open class SimpleActivity : BaseSimpleActivity() {
|
|||
|
||||
@TargetApi(Build.VERSION_CODES.M)
|
||||
protected fun launchSetDefaultDialerIntent() {
|
||||
val intent = Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER).putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, packageName)
|
||||
startActivityForResult(intent, REQUEST_CODE_SET_DEFAULT_DIALER)
|
||||
Intent(TelecomManager.ACTION_CHANGE_DEFAULT_DIALER).putExtra(TelecomManager.EXTRA_CHANGE_DEFAULT_DIALER_PACKAGE_NAME, packageName).apply {
|
||||
if (resolveActivity(packageManager) != null) {
|
||||
startActivityForResult(this, REQUEST_CODE_SET_DEFAULT_DIALER)
|
||||
} else {
|
||||
toast(R.string.no_app_found)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -446,11 +446,12 @@ class ViewContactActivity : ContactActivity() {
|
|||
|
||||
private fun setupContactSource() {
|
||||
if (showFields and SHOW_CONTACT_SOURCE_FIELD != 0) {
|
||||
val contactSourceValue = getPublicContactSource(contact!!.source)
|
||||
contact_source.text = contactSourceValue
|
||||
getPublicContactSource(contact!!.source) {
|
||||
contact_source.text = it
|
||||
contact_source.copyOnLongClick(it)
|
||||
}
|
||||
contact_source_image.beVisible()
|
||||
contact_source.beVisible()
|
||||
contact_source.copyOnLongClick(contactSourceValue)
|
||||
} else {
|
||||
contact_source_image.beGone()
|
||||
contact_source.beGone()
|
||||
|
|
|
@ -62,7 +62,7 @@ class FilterContactSourcesAdapter(val activity: SimpleActivity, private val cont
|
|||
itemView.apply {
|
||||
filter_contact_source_checkbox.isChecked = isSelected
|
||||
filter_contact_source_checkbox.setColors(activity.config.textColor, activity.getAdjustedPrimaryColor(), activity.config.backgroundColor)
|
||||
filter_contact_source_checkbox.text = contactSource.name
|
||||
filter_contact_source_checkbox.text = contactSource.publicName
|
||||
filter_contact_source_holder.setOnClickListener { viewClicked(!isSelected, contactSource) }
|
||||
}
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ import com.simplemobiletools.contacts.pro.R
|
|||
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
||||
import com.simplemobiletools.contacts.pro.extensions.addBlockedNumber
|
||||
import com.simplemobiletools.contacts.pro.extensions.config
|
||||
import com.simplemobiletools.contacts.pro.extensions.startCallIntent
|
||||
import com.simplemobiletools.contacts.pro.helpers.ContactsHelper
|
||||
import com.simplemobiletools.contacts.pro.helpers.RECENTS_TAB_MASK
|
||||
import com.simplemobiletools.contacts.pro.interfaces.RefreshContactsListener
|
||||
|
@ -31,9 +32,15 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
|||
override fun getActionMenuId() = R.menu.cab_recent_calls
|
||||
|
||||
override fun prepareActionMode(menu: Menu) {
|
||||
val selectedItems = getSelectedItems()
|
||||
if (selectedItems.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
menu.apply {
|
||||
findItem(R.id.cab_block_number).isVisible = isNougatPlus()
|
||||
findItem(R.id.cab_block_number).title = activity.getString(if (isOneItemSelected()) R.string.block_number else R.string.block_numbers)
|
||||
findItem(R.id.cab_call_number).isVisible = isOneItemSelected() && selectedItems.first().name == null
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -43,6 +50,7 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
|||
}
|
||||
|
||||
when (id) {
|
||||
R.id.cab_call_number -> callNumber()
|
||||
R.id.cab_select_all -> selectAll()
|
||||
R.id.cab_delete -> askConfirmDelete()
|
||||
R.id.cab_block_number -> blockNumber()
|
||||
|
@ -76,6 +84,10 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
|||
fastScroller?.measureRecyclerView()
|
||||
}
|
||||
|
||||
private fun callNumber() {
|
||||
(activity as SimpleActivity).startCallIntent(getSelectedItems().first().number)
|
||||
}
|
||||
|
||||
private fun askConfirmDelete() {
|
||||
ConfirmationDialog(activity) {
|
||||
deleteRecentCalls()
|
||||
|
|
|
@ -36,12 +36,14 @@ class CreateNewGroupDialog(val activity: BaseSimpleActivity, val callback: (newG
|
|||
|
||||
val contactSources = ArrayList<ContactSource>()
|
||||
if (activity.config.localAccountName.isNotEmpty()) {
|
||||
contactSources.add(ContactSource(activity.config.localAccountName, activity.config.localAccountType))
|
||||
val localAccountName = activity.config.localAccountName
|
||||
contactSources.add(ContactSource(localAccountName, activity.config.localAccountType, localAccountName))
|
||||
}
|
||||
|
||||
ContactsHelper(activity).getContactSources {
|
||||
it.filter { it.type.contains("google", true) }.mapTo(contactSources, { ContactSource(it.name, it.type) })
|
||||
contactSources.add(ContactSource(activity.getString(R.string.phone_storage_hidden), SMT_PRIVATE))
|
||||
it.filter { it.type.contains("google", true) }.mapTo(contactSources) { ContactSource(it.name, it.type, it.name) }
|
||||
val phoneSecret = activity.getString(R.string.phone_storage_hidden)
|
||||
contactSources.add(ContactSource(phoneSecret, SMT_PRIVATE, phoneSecret))
|
||||
|
||||
val items = ArrayList<RadioItem>()
|
||||
contactSources.forEachIndexed { index, contactSource ->
|
||||
|
|
|
@ -41,12 +41,12 @@ class FilterContactSourcesDialog(val activity: SimpleActivity, private val callb
|
|||
|
||||
private fun confirmEventTypes() {
|
||||
val selectedContactSources = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedContactSources()
|
||||
val ignoredContactSourceNames = contactSources.filter { !selectedContactSources.contains(it) }.map {
|
||||
if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name
|
||||
val ignoredContactSources = contactSources.filter { !selectedContactSources.contains(it) }.map {
|
||||
if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.getFullIdentifier()
|
||||
}.toHashSet()
|
||||
|
||||
if (activity.getVisibleContactSources() != ignoredContactSourceNames) {
|
||||
activity.config.ignoredContactSources = ignoredContactSourceNames
|
||||
if (activity.getVisibleContactSources() != ignoredContactSources) {
|
||||
activity.config.ignoredContactSources = ignoredContactSources
|
||||
callback()
|
||||
}
|
||||
dialog?.dismiss()
|
||||
|
|
|
@ -20,11 +20,16 @@ class ImportContactsDialog(val activity: SimpleActivity, val path: String, priva
|
|||
init {
|
||||
val view = (activity.layoutInflater.inflate(R.layout.dialog_import_contacts, null) as ViewGroup).apply {
|
||||
targetContactSource = activity.config.lastUsedContactSource
|
||||
import_contacts_title.text = activity.getPublicContactSource(targetContactSource)
|
||||
activity.getPublicContactSource(targetContactSource) {
|
||||
import_contacts_title.text = it
|
||||
}
|
||||
|
||||
import_contacts_title.setOnClickListener {
|
||||
activity.showContactSourcePicker(targetContactSource) {
|
||||
targetContactSource = if (it == activity.getString(R.string.phone_storage_hidden)) SMT_PRIVATE else it
|
||||
import_contacts_title.text = activity.getPublicContactSource(it)
|
||||
activity.getPublicContactSource(it) {
|
||||
import_contacts_title.text = it
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,8 +65,11 @@ fun SimpleActivity.showContactSourcePicker(currentSource: String, callback: (new
|
|||
)
|
||||
|
||||
val items = ArrayList<RadioItem>()
|
||||
val sources = it.filter { !ignoredTypes.contains(it.type) }.map { it.name }
|
||||
var currentSourceIndex = -1
|
||||
val filteredSources = it.filter { !ignoredTypes.contains(it.type) }
|
||||
var sources = filteredSources.map { it.name }
|
||||
var currentSourceIndex = sources.indexOfFirst { it == currentSource }
|
||||
sources = filteredSources.map { it.publicName }
|
||||
|
||||
sources.forEachIndexed { index, account ->
|
||||
var publicAccount = account
|
||||
if (account == config.localAccountName) {
|
||||
|
@ -74,16 +77,14 @@ fun SimpleActivity.showContactSourcePicker(currentSource: String, callback: (new
|
|||
}
|
||||
|
||||
items.add(RadioItem(index, publicAccount))
|
||||
if (account == currentSource) {
|
||||
currentSourceIndex = index
|
||||
} else if (currentSource == SMT_PRIVATE && account == getString(R.string.phone_storage_hidden)) {
|
||||
if (currentSource == SMT_PRIVATE && account == getString(R.string.phone_storage_hidden)) {
|
||||
currentSourceIndex = index
|
||||
}
|
||||
}
|
||||
|
||||
runOnUiThread {
|
||||
RadioGroupDialog(this, items, currentSourceIndex) {
|
||||
callback(sources[it as Int])
|
||||
callback(filteredSources[it as Int].name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ import android.content.Intent
|
|||
import android.database.Cursor
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.provider.BlockedNumberContract
|
||||
import android.provider.BlockedNumberContract.BlockedNumbers
|
||||
import android.provider.ContactsContract
|
||||
|
@ -15,6 +17,7 @@ import androidx.core.content.FileProvider
|
|||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
||||
import com.simplemobiletools.commons.helpers.isMarshmallowPlus
|
||||
import com.simplemobiletools.commons.helpers.isNougatPlus
|
||||
import com.simplemobiletools.contacts.pro.BuildConfig
|
||||
import com.simplemobiletools.contacts.pro.R
|
||||
|
@ -192,11 +195,26 @@ fun Context.getPhotoThumbnailSize(): Int {
|
|||
|
||||
fun Context.hasContactPermissions() = hasPermission(PERMISSION_READ_CONTACTS) && hasPermission(PERMISSION_WRITE_CONTACTS)
|
||||
|
||||
fun Context.getPublicContactSource(source: String): String {
|
||||
return when (source) {
|
||||
config.localAccountName -> getString(R.string.phone_storage)
|
||||
SMT_PRIVATE -> getString(R.string.phone_storage_hidden)
|
||||
else -> source
|
||||
fun Context.getPublicContactSource(source: String, callback: (String) -> Unit) {
|
||||
when (source) {
|
||||
config.localAccountName -> callback(getString(R.string.phone_storage))
|
||||
SMT_PRIVATE -> callback(getString(R.string.phone_storage_hidden))
|
||||
else -> {
|
||||
Thread {
|
||||
ContactsHelper(this).getContactSources {
|
||||
var newSource = source
|
||||
for (contactSource in it) {
|
||||
if (contactSource.name == source && contactSource.type == TELEGRAM_PACKAGE) {
|
||||
newSource += " (${getString(R.string.telegram)})"
|
||||
break
|
||||
}
|
||||
}
|
||||
Handler(Looper.getMainLooper()).post {
|
||||
callback(newSource)
|
||||
}
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -288,9 +306,11 @@ fun Context.getContactPublicUri(contact: Contact): Uri {
|
|||
|
||||
fun Context.getVisibleContactSources(): ArrayList<String> {
|
||||
val sources = ContactsHelper(this).getDeviceContactSources()
|
||||
sources.add(ContactSource(getString(R.string.phone_storage_hidden), SMT_PRIVATE))
|
||||
val sourceNames = ArrayList(sources).map { if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name }.toMutableList() as ArrayList<String>
|
||||
sourceNames.removeAll(config.ignoredContactSources)
|
||||
val phoneSecret = getString(R.string.phone_storage_hidden)
|
||||
sources.add(ContactSource(phoneSecret, SMT_PRIVATE, phoneSecret))
|
||||
val ignoredContactSources = config.ignoredContactSources
|
||||
val sourceNames = ArrayList(sources).filter { !ignoredContactSources.contains(it.getFullIdentifier()) }
|
||||
.map { if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name }.toMutableList() as ArrayList<String>
|
||||
return sourceNames
|
||||
}
|
||||
|
||||
|
@ -331,7 +351,11 @@ fun Context.getBlockedNumbers(): ArrayList<BlockedNumber> {
|
|||
fun Context.addBlockedNumber(number: String) {
|
||||
ContentValues().apply {
|
||||
put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, number)
|
||||
contentResolver.insert(BlockedNumbers.CONTENT_URI, this)
|
||||
try {
|
||||
contentResolver.insert(BlockedNumbers.CONTENT_URI, this)
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -344,4 +368,4 @@ fun Context.deleteBlockedNumber(number: String) {
|
|||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.M)
|
||||
fun Context.isDefaultDialer() = telecomManager.defaultDialerPackage == packageName
|
||||
fun Context.isDefaultDialer() = isMarshmallowPlus() && telecomManager.defaultDialerPackage == packageName
|
||||
|
|
|
@ -7,7 +7,7 @@ import com.simplemobiletools.contacts.pro.models.LocalContact
|
|||
const val SHOW_CONTACT_THUMBNAILS = "show_contact_thumbnails"
|
||||
const val SHOW_PHONE_NUMBERS = "show_phone_numbers"
|
||||
const val SHOW_ONLY_CONTACTS_WITH_NUMBERS = "show_only_contacts_with_numbers"
|
||||
const val IGNORED_CONTACT_SOURCES = "ignored_contact_sources"
|
||||
const val IGNORED_CONTACT_SOURCES = "ignored_contact_sources_2"
|
||||
const val START_NAME_WITH_SURNAME = "start_name_with_surname"
|
||||
const val LAST_USED_CONTACT_SOURCE = "last_used_contact_source"
|
||||
const val LOCAL_ACCOUNT_NAME = "local_account_name"
|
||||
|
|
|
@ -108,7 +108,12 @@ class ContactsHelper(val context: Context) {
|
|||
do {
|
||||
val name = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_NAME) ?: ""
|
||||
val type = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_TYPE) ?: ""
|
||||
val source = ContactSource(name, type)
|
||||
var publicName = name
|
||||
if (type == TELEGRAM_PACKAGE) {
|
||||
publicName += " (${context.getString(R.string.telegram)})"
|
||||
}
|
||||
|
||||
val source = ContactSource(name, type, publicName)
|
||||
sources.add(source)
|
||||
} while (cursor.moveToNext())
|
||||
}
|
||||
|
@ -125,10 +130,12 @@ class ContactsHelper(val context: Context) {
|
|||
return
|
||||
}
|
||||
|
||||
val ignoredSources = context.config.ignoredContactSources
|
||||
val uri = ContactsContract.Data.CONTENT_URI
|
||||
val projection = getContactProjection()
|
||||
val selection = getSourcesSelection(true)
|
||||
val selectionArgs = getSourcesSelectionArgs(CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
|
||||
|
||||
val selection = "${ContactsContract.Data.MIMETYPE} = ?"
|
||||
val selectionArgs = arrayOf(CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)
|
||||
val sortOrder = getSortString()
|
||||
|
||||
var cursor: Cursor? = null
|
||||
|
@ -136,6 +143,12 @@ class ContactsHelper(val context: Context) {
|
|||
cursor = context.contentResolver.query(uri, projection, selection, selectionArgs, sortOrder)
|
||||
if (cursor?.moveToFirst() == true) {
|
||||
do {
|
||||
val accountName = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_NAME) ?: ""
|
||||
val accountType = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_TYPE) ?: ""
|
||||
if (ignoredSources.contains("$accountName:$accountType")) {
|
||||
continue
|
||||
}
|
||||
|
||||
val id = cursor.getIntValue(ContactsContract.Data.RAW_CONTACT_ID)
|
||||
val prefix = cursor.getStringValue(CommonDataKinds.StructuredName.PREFIX) ?: ""
|
||||
val firstName = cursor.getStringValue(CommonDataKinds.StructuredName.GIVEN_NAME) ?: ""
|
||||
|
@ -148,7 +161,6 @@ class ContactsHelper(val context: Context) {
|
|||
val emails = ArrayList<Email>()
|
||||
val addresses = ArrayList<Address>()
|
||||
val events = ArrayList<Event>()
|
||||
val accountName = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_NAME) ?: ""
|
||||
val starred = cursor.getIntValue(CommonDataKinds.StructuredName.STARRED)
|
||||
val contactId = cursor.getIntValue(ContactsContract.Data.CONTACT_ID)
|
||||
val thumbnailUri = cursor.getStringValue(CommonDataKinds.StructuredName.PHOTO_THUMBNAIL_URI) ?: ""
|
||||
|
@ -825,7 +837,8 @@ class ContactsHelper(val context: Context) {
|
|||
|
||||
private fun getContactSourcesSync(): ArrayList<ContactSource> {
|
||||
val sources = getDeviceContactSources()
|
||||
sources.add(ContactSource(context.getString(R.string.phone_storage_hidden), SMT_PRIVATE))
|
||||
val phoneSecret = context.getString(R.string.phone_storage_hidden)
|
||||
sources.add(ContactSource(phoneSecret, SMT_PRIVATE, phoneSecret))
|
||||
return ArrayList(sources)
|
||||
}
|
||||
|
||||
|
@ -838,10 +851,11 @@ class ContactsHelper(val context: Context) {
|
|||
val accounts = AccountManager.get(context).accounts
|
||||
accounts.forEach {
|
||||
if (ContentResolver.getIsSyncable(it, ContactsContract.AUTHORITY) == 1) {
|
||||
val contactSource = ContactSource(it.name, it.type)
|
||||
var publicName = it.name
|
||||
if (it.type == TELEGRAM_PACKAGE) {
|
||||
contactSource.name += " (${context.getString(R.string.telegram)})"
|
||||
publicName += " (${context.getString(R.string.telegram)})"
|
||||
}
|
||||
val contactSource = ContactSource(it.name, it.type, publicName)
|
||||
sources.add(contactSource)
|
||||
}
|
||||
}
|
||||
|
@ -852,7 +866,7 @@ class ContactsHelper(val context: Context) {
|
|||
sources.addAll(contentResolverAccounts)
|
||||
|
||||
if (sources.isEmpty() && context.config.localAccountName.isEmpty() && context.config.localAccountType.isEmpty()) {
|
||||
sources.add(ContactSource("", ""))
|
||||
sources.add(ContactSource("", "", ""))
|
||||
}
|
||||
|
||||
return sources
|
||||
|
@ -871,7 +885,8 @@ class ContactsHelper(val context: Context) {
|
|||
CommonDataKinds.StructuredName.PHOTO_URI,
|
||||
CommonDataKinds.StructuredName.PHOTO_THUMBNAIL_URI,
|
||||
CommonDataKinds.StructuredName.STARRED,
|
||||
ContactsContract.RawContacts.ACCOUNT_NAME
|
||||
ContactsContract.RawContacts.ACCOUNT_NAME,
|
||||
ContactsContract.RawContacts.ACCOUNT_TYPE
|
||||
)
|
||||
|
||||
private fun getSortString(): String {
|
||||
|
|
|
@ -119,7 +119,7 @@ data class Contact(var id: Int, var prefix: String, var firstName: String, var m
|
|||
|
||||
fun getHashToCompare() = getStringToCompare().hashCode()
|
||||
|
||||
fun getFullCompany(): String {
|
||||
private fun getFullCompany(): String {
|
||||
var fullOrganization = if (organization.company.isEmpty()) "" else "${organization.company}, "
|
||||
fullOrganization += organization.jobPosition
|
||||
return fullOrganization.trim().trimEnd(',')
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
package com.simplemobiletools.contacts.pro.models
|
||||
|
||||
data class ContactSource(var name: String, var type: String)
|
||||
import com.simplemobiletools.contacts.pro.helpers.SMT_PRIVATE
|
||||
|
||||
data class ContactSource(var name: String, var type: String, var publicName: String) {
|
||||
fun getFullIdentifier(): String {
|
||||
return if (type == SMT_PRIVATE) {
|
||||
type
|
||||
} else {
|
||||
"$name:$type"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
After Width: | Height: | Size: 316 B |
Before Width: | Height: | Size: 566 B After Width: | Height: | Size: 566 B |
After Width: | Height: | Size: 406 B |
Before Width: | Height: | Size: 716 B After Width: | Height: | Size: 716 B |
After Width: | Height: | Size: 566 B |
Before Width: | Height: | Size: 993 B After Width: | Height: | Size: 993 B |
After Width: | Height: | Size: 716 B |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
|
@ -238,7 +238,7 @@
|
|||
android:background="@drawable/circle_background"
|
||||
android:elevation="@dimen/medium_margin"
|
||||
android:padding="@dimen/normal_margin"
|
||||
android:src="@drawable/ic_phone_big"
|
||||
android:src="@drawable/ic_phone_huge"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_phone"/>
|
||||
android:src="@drawable/ic_phone_big"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_send_sms"
|
||||
|
@ -196,7 +196,7 @@
|
|||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_phone"/>
|
||||
android:src="@drawable/ic_phone_big"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/contact_numbers_holder"
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:scaleType="center"
|
||||
android:src="@drawable/ic_phone"/>
|
||||
android:src="@drawable/ic_phone_big"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_send_sms"
|
||||
|
@ -197,7 +197,7 @@
|
|||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_phone"/>
|
||||
android:src="@drawable/ic_phone_big"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/contact_numbers_holder"
|
||||
|
|
|
@ -13,6 +13,6 @@
|
|||
android:layout_centerInParent="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/activity_margin"
|
||||
android:src="@drawable/ic_phone_big"/>
|
||||
android:src="@drawable/ic_phone_huge"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<item
|
||||
android:id="@+id/cab_delete"
|
||||
android:icon="@drawable/ic_delete"
|
||||
android:title="@string/delete"
|
||||
android:id="@+id/cab_call_number"
|
||||
android:icon="@drawable/ic_phone"
|
||||
android:title="@string/call_number"
|
||||
app:showAsAction="ifRoom"/>
|
||||
<item
|
||||
android:id="@+id/cab_select_all"
|
||||
|
@ -16,4 +16,9 @@
|
|||
android:icon="@drawable/ic_block"
|
||||
android:title="@string/block_number"
|
||||
app:showAsAction="ifRoom"/>
|
||||
<item
|
||||
android:id="@+id/cab_delete"
|
||||
android:icon="@drawable/ic_delete"
|
||||
android:title="@string/delete"
|
||||
app:showAsAction="ifRoom"/>
|
||||
</menu>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
|
|
|
@ -17,14 +17,15 @@
|
|||
<string name="request_the_required_permissions">Benötigte Berechtigungen anfordern</string>
|
||||
<string name="create_new_contact">Neuen Kontakt erstellen</string>
|
||||
<string name="add_to_existing_contact">Zu einem existierenden Kontakt hinzufügen</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="must_make_default_dialer">Du musst diese App als Standardtelefonie-App einstellen, um Nummern blockieren zu können.</string>
|
||||
<string name="set_to_default">Als Standard auswählen</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Keine Kontakte gefunden</string>
|
||||
<string name="no_contacts_with_emails">Keine Kontakte mit E-Mailadressen gefunden</string>
|
||||
<string name="no_contacts_with_phone_numbers">Keine Kontakte mit Telefonnummern gefunden</string>
|
||||
<string name="no_recent_calls_found">No recent calls found</string>
|
||||
<string name="no_recent_calls_found">Keine kürzlichen Anrufe gefunden</string>
|
||||
|
||||
<string name="new_contact">Neuer Kontakt</string>
|
||||
<string name="edit_contact">Kontakt bearbeiten</string>
|
||||
|
@ -55,7 +56,7 @@
|
|||
<string name="start_name_with_surname">Namen mit Nachnamen beginnen</string>
|
||||
<string name="show_phone_numbers">Telefonnummern im Hauptmenü zeigen</string>
|
||||
<string name="show_contact_thumbnails">Vorschaubilder der Kontakte zeigen</string>
|
||||
<string name="show_dialpad_button">Show a dialpad button on the main screen</string>
|
||||
<string name="show_dialpad_button">Eine Wählfehldschaltfläche auf dem Hauptbildschirm anzeigen</string>
|
||||
<string name="on_contact_click">Beim Klicken auf den Kontakt</string>
|
||||
<string name="call_contact">Kontakt anrufen</string>
|
||||
<string name="view_contact">Kontaktdetails anzeigen</string>
|
||||
|
@ -113,13 +114,13 @@
|
|||
|
||||
<!-- Dialer -->
|
||||
<string name="dialer">Dialer</string>
|
||||
<string name="calling">Calling</string>
|
||||
<string name="incoming_call">Incoming call</string>
|
||||
<string name="incoming_call_from">Incoming call from…</string>
|
||||
<string name="ongoing_call">Ongoing call</string>
|
||||
<string name="disconnected">Disconnected</string>
|
||||
<string name="decline_call">Decline</string>
|
||||
<string name="answer_call">Answer</string>
|
||||
<string name="calling">Anrufaufbau</string>
|
||||
<string name="incoming_call">Eingehender Anruf</string>
|
||||
<string name="incoming_call_from">Eingehender Anruf von…</string>
|
||||
<string name="ongoing_call">Laufender Anruf</string>
|
||||
<string name="disconnected">Getrennt</string>
|
||||
<string name="decline_call">Ablehnen</string>
|
||||
<string name="answer_call">Antworten</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">Sichtbare Felder auswählen</string>
|
||||
|
@ -137,12 +138,12 @@
|
|||
<string name="instant_messaging">Instant messaging (IM)</string>
|
||||
|
||||
<!-- Blocked numbers -->
|
||||
<string name="manage_blocked_numbers">Manage blocked numbers</string>
|
||||
<string name="not_blocking_anyone">You are not blocking anyone.</string>
|
||||
<string name="add_a_blocked_number">Add a blocked number</string>
|
||||
<string name="block_number">Block number</string>
|
||||
<string name="block_numbers">Block numbers</string>
|
||||
<string name="blocked_numbers">Blocked numbers</string>
|
||||
<string name="manage_blocked_numbers">Blockierte Nummern verwalten</string>
|
||||
<string name="not_blocking_anyone">Du blockierst niemanden.</string>
|
||||
<string name="add_a_blocked_number">Eine blockierte Nummer hinzufügen</string>
|
||||
<string name="block_number">Nummer blockieren</string>
|
||||
<string name="block_numbers">Nummern blockieren</string>
|
||||
<string name="blocked_numbers">Blockierte Nummern</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Ich möchte die sichtbaren Kontaktfelder ändern. Kann ich das machen?</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Προσθήκη σε μια υπάρχουσα Επαφή</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Ajouter à un contact existant</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Aucun contact n\'a été trouvé</string>
|
||||
|
@ -139,10 +140,10 @@
|
|||
<!-- Blocked numbers -->
|
||||
<string name="manage_blocked_numbers">Manage blocked numbers</string>
|
||||
<string name="not_blocking_anyone">You are not blocking anyone.</string>
|
||||
<string name="add_a_blocked_number">Add a blocked number</string>
|
||||
<string name="block_number">Block number</string>
|
||||
<string name="block_numbers">Block numbers</string>
|
||||
<string name="blocked_numbers">Blocked numbers</string>
|
||||
<string name="add_a_blocked_number">Ajouter un numéro bloqué</string>
|
||||
<string name="block_number">Numéro bloquer</string>
|
||||
<string name="block_numbers">Numéros bloquer</string>
|
||||
<string name="blocked_numbers">Numéros bloquer</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Je veux modifier les champs affichés sur les fiches de mes contacts. Puis-je le faire ?</string>
|
||||
|
@ -152,12 +153,12 @@
|
|||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Une application répertoire pour gérer vos contacts sans publicité.</string>
|
||||
<string name="app_long_description">
|
||||
Un outil simple pour créer et gérer vos contacts depuis n\'importe quelle source. Les contacts peuvent être stockés sur votre appareil mais aussi synchronisés via votre compte Google ou d\'autres comptes. Vous pouvez afficher vos contacts favoris dans une liste séparée.
|
||||
|
||||
Vous pouvez l\'utiliser pour gérer les adresses de courriels et les événements de vos contacts. Cet outil permet de trier/filtrer à l\'aide de multiples paramètres, par exemple : afficher le surnom en premier.
|
||||
|
||||
L\'application ne contient ni publicité, ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables.
|
||||
|
||||
Un outil simple pour créer et gérer vos contacts depuis n\'importe quelle source. Les contacts peuvent être stockés sur votre appareil mais aussi synchronisés via votre compte Google ou d\'autres comptes. Vous pouvez afficher vos contacts favoris dans une liste séparée.
|
||||
|
||||
Vous pouvez l\'utiliser pour gérer les adresses de courriels et les événements de vos contacts. Cet outil permet de trier/filtrer à l\'aide de multiples paramètres, par exemple : afficher le surnom en premier.
|
||||
|
||||
L\'application ne contient ni publicité, ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables.
|
||||
|
||||
Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur https://www.simplemobiletools.com
|
||||
</string>
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<resources>
|
||||
<string name="app_name">Simple Contacts</string>
|
||||
<string name="app_name">Semplice Contatti</string>
|
||||
<string name="app_launcher_name">Contatti</string>
|
||||
<string name="address">Indirizzo</string>
|
||||
<string name="inserting">Inserimento in corso…</string>
|
||||
<string name="updating">Aggiornamento in corso…</string>
|
||||
<string name="phone_storage">Memoria del telefono</string>
|
||||
<string name="phone_storage_hidden">Memoria del telefono (non visibile alle altre applicazioni)</string>
|
||||
<string name="company">Compagnia</string>
|
||||
<string name="company">Società</string>
|
||||
<string name="job_position">Posizione lavorativa</string>
|
||||
<string name="website">Sito web</string>
|
||||
<string name="send_sms_to_contacts">Invia un SMS ai contatti</string>
|
||||
|
@ -16,9 +16,10 @@
|
|||
<string name="call_person">Chiama %s</string>
|
||||
<string name="request_the_required_permissions">Richiedi le permissioni necessarie</string>
|
||||
<string name="create_new_contact">Crea un nuovo contatto</string>
|
||||
<string name="add_to_existing_contact">Aggiungi ad un contatto esistente</string>
|
||||
<string name="add_to_existing_contact">Aggiungi a un contatto esistente</string>
|
||||
<string name="must_make_default_dialer">È necessario impostare quest\'app come predefinita per utilizzare i numeri bloccati.</string>
|
||||
<string name="set_to_default">Imposta come predefinita</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Nessun contatto trovato</string>
|
||||
|
@ -47,25 +48,25 @@
|
|||
<string name="create_group_under_account">Crea un gruppo con un account</string>
|
||||
|
||||
<!-- Photo -->
|
||||
<string name="take_photo">Scatta un foto</string>
|
||||
<string name="take_photo">Scatta una foto</string>
|
||||
<string name="choose_photo">Scegli una foto</string>
|
||||
<string name="remove_photo">Rimuovi foto</string>
|
||||
<string name="remove_photo">Rimuovi la foto</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="start_name_with_surname">Prima il nome poi il cognome</string>
|
||||
<string name="show_phone_numbers">Mostra i numeri di telefono nella schermata principale</string>
|
||||
<string name="show_contact_thumbnails">Mostra le anteprime dei contatti</string>
|
||||
<string name="show_dialpad_button">Mostra il pulante per la tastiera nello schermo principale</string>
|
||||
<string name="on_contact_click">Al click sul contatto</string>
|
||||
<string name="show_dialpad_button">Mostra il pulante per il tastierino nello schermo principale</string>
|
||||
<string name="on_contact_click">Alla pressione sul contatto</string>
|
||||
<string name="call_contact">Chiama contatto</string>
|
||||
<string name="view_contact">Visualizza i dettagli del contatto</string>
|
||||
<string name="manage_shown_contact_fields">Gestisci i campi mostrati</string>
|
||||
<string name="filter_duplicates">Prova a filtrare i contatti duplicati</string>
|
||||
<string name="filter_duplicates">Unisci i contatti duplicati</string>
|
||||
<string name="manage_shown_tabs">Gestisci le schede mostrate</string>
|
||||
<string name="contacts">Contatti</string>
|
||||
<string name="favorites">Preferiti</string>
|
||||
<string name="recent_calls">Chiamate recenti</string>
|
||||
<string name="show_call_confirmation_dialog">Mostra un dialogo di conferma prima di iniziare una chiamata</string>
|
||||
<string name="show_call_confirmation_dialog">Mostra un messaggio di conferma prima di iniziare una chiamata</string>
|
||||
<string name="show_only_contacts_with_numbers">Mostra solamente i contatti con almeno un numero telefonico</string>
|
||||
|
||||
<!-- Emails -->
|
||||
|
@ -88,11 +89,11 @@
|
|||
<string name="anniversary">Anniversario</string>
|
||||
|
||||
<!-- Favorites -->
|
||||
<string name="no_favorites">Sembra che ancora non si ha nessun contatto preferito.</string>
|
||||
<string name="no_favorites">Non si ha ancora nessun contatto preferito.</string>
|
||||
<string name="add_favorites">Aggiungi preferito</string>
|
||||
<string name="add_to_favorites">Aggiungi ai preferiti</string>
|
||||
<string name="remove_from_favorites">Rimuovi dai preferiti</string>
|
||||
<string name="must_be_at_edit">Devi stare nella schermata di modifica per modificare un contatto</string>
|
||||
<string name="must_be_at_edit">Si deve stare nella schermata di modifica per modificare un contatto</string>
|
||||
|
||||
<!-- Search -->
|
||||
<string name="search_contacts">Cerca contatti</string>
|
||||
|
@ -138,7 +139,7 @@
|
|||
|
||||
<!-- Blocked numbers -->
|
||||
<string name="manage_blocked_numbers">Gestisci i numeri bloccati</string>
|
||||
<string name="not_blocking_anyone">Non si sta blocccando alcun numero.</string>
|
||||
<string name="not_blocking_anyone">Nessun numero bloccato.</string>
|
||||
<string name="add_a_blocked_number">Aggiungi un numero da bloccare</string>
|
||||
<string name="block_number">Blocca numero</string>
|
||||
<string name="block_numbers">Blocca numeri</string>
|
||||
|
@ -146,19 +147,19 @@
|
|||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Voglio cambiare i campi visibili ai contatti. Come posso fare?</string>
|
||||
<string name="faq_1_text">Puoi farlo andando in Impostazioni -> Gestisci i campi mostrati. Qui puoi selezionare i campi che saranno visibili. Alcuni sono anche disabilitati in maniera predefinita, quindi potresti trovare qualche nuovo campo.</string>
|
||||
<string name="faq_1_text">Si può farlo andando in Impostazioni -> Gestisci i campi mostrati. Qui si possono selezionare i campi che saranno visibili, alcuni sono disabilitati in maniera predefinita, quindi si possono trovare campi aggiuntivi.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Un\'applicazioni contatti per gestire i propri contatti senza pubblicità.</string>
|
||||
<string name="app_long_description">
|
||||
Una semplice applicazione per creare o gestire i propri contatti da qualsiasi provenienza. I contatti saranno salvati solamente nel dispositivo, ma possono essere sincronizzati con Google, o con altri servizi. Si possono visualizzare i contatti preferiti in una list separata.
|
||||
Una semplice applicazione per creare o gestire i propri contatti di qualsiasi tipo. I contatti saranno salvati nel dispositivo, ma possono essere eventualmente sincronizzati con Google o con altri servizi. Si possono visualizzare i contatti preferiti in una lista separata.
|
||||
|
||||
Si può utilizzare l\'applicazione anche per gestire le email e gli eventi. Può ordinare e filtrare per parametri multipli, ed opzionalmente visualizzare il cognome come nome
|
||||
Si può utilizzare l\'applicazione anche per gestire l\'email e gli eventi. Si possono ordinare e filtrare per diversi criteri, opzionalmente si può visualizzare il cognome come nome.
|
||||
|
||||
Non contiene pubblicità nè chiede permessi non necessari. È completamente open source ed offre colori personalizzabili.
|
||||
L\'applicazione non contiene pubblicità o permessi non necessari; è completamente opensource e la si può personalizzare con i propri colori preferiti.
|
||||
|
||||
Quest\'app fa parte di una serie più grande. Puoi trovare le altre su https://www.simplemobiletools.com
|
||||
Questa è solamente una delle tante applicazioni della serie Simple Mobile Tools. Si possono trovare le altre su https://www.simplemobiletools.com
|
||||
</string>
|
||||
|
||||
<!--
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">既存の連絡先に追加</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">連絡先が見つかりません</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
|
|
|
@ -17,8 +17,9 @@
|
|||
<string name="request_the_required_permissions">Pedir a permissão necessária</string>
|
||||
<string name="create_new_contact">Criar novo contacto</string>
|
||||
<string name="add_to_existing_contact">Adicionar a contacto existente</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="must_make_default_dialer">Tem que tornar esta a aplicação padrão para poder bloquear números.</string>
|
||||
<string name="set_to_default">Definir como padrão</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Não existem contactos</string>
|
||||
|
@ -104,7 +105,7 @@
|
|||
<string name="import_contacts_from_vcf">Importar contactos de um ficheiro .vcf</string>
|
||||
<string name="export_contacts_to_vcf">Exportar contactos para um ficheiro .vcf</string>
|
||||
<string name="target_contact_source">Destino da origem do contacto</string>
|
||||
<string name="include_contact_sources">Incluir fontes dos contactos</string>
|
||||
<string name="include_contact_sources">Incluir fonte dos contactos</string>
|
||||
<string name="filename_without_vcf">Nome do ficheiro (sem .vcf)</string>
|
||||
|
||||
<!-- Dialpad -->
|
||||
|
@ -137,12 +138,12 @@
|
|||
<string name="instant_messaging">Mensagem instantânea (IM)</string>
|
||||
|
||||
<!-- Blocked numbers -->
|
||||
<string name="manage_blocked_numbers">Manage blocked numbers</string>
|
||||
<string name="not_blocking_anyone">You are not blocking anyone.</string>
|
||||
<string name="add_a_blocked_number">Add a blocked number</string>
|
||||
<string name="block_number">Block number</string>
|
||||
<string name="block_numbers">Block numbers</string>
|
||||
<string name="blocked_numbers">Blocked numbers</string>
|
||||
<string name="manage_blocked_numbers">Gerir números bloqueados</string>
|
||||
<string name="not_blocking_anyone">Não existem números bloqueados</string>
|
||||
<string name="add_a_blocked_number">Adicionar um número a bloquear</string>
|
||||
<string name="block_number">Bloquear número</string>
|
||||
<string name="block_numbers">Bloquear números</string>
|
||||
<string name="blocked_numbers">Números bloqueados</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">I want to change what fields are visible at contacts. Can I do it?</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Добавить к существующему контакту</string>
|
||||
<string name="must_make_default_dialer">Вы должны сделать \"Simple Contacts\" приложением по умолчанию для набора номера для использования блокировки номеров.</string>
|
||||
<string name="set_to_default">Сделать по умолчанию</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Контакты не найдены</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Pridať k existujúcemu kontaktu</string>
|
||||
<string name="must_make_default_dialer">Pre použitie blokovania čísel musíte nastaviť aplikáciu ako predvolenú pre správu hovorov.</string>
|
||||
<string name="set_to_default">Nastaviť ako predvolenú</string>
|
||||
<string name="call_number">Zavolať číslo</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Nenašli sa žiadne kontakty</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Lägg till i en befintlig kontakt</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Inga kontakter hittades</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Mevcut bir kişiye ekle</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Kişi bulunamadı</string>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">添加至已存在的聯絡人</string>
|
||||
<string name="must_make_default_dialer">你必須將這應用程式設為預設的撥號程式來使用黑名單。</string>
|
||||
<string name="set_to_default">設為預設</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">未發現聯絡人</string>
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
<string name="telegram">Telegram</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_39">Changed the way contacts are fetched, please reset your filters.</string>
|
||||
<string name="release_34">Added new options for toggling 24 hour time format and showing only contacts with phone numbers</string>
|
||||
<string name="release_32">Added a simple dialpad, dialer will come soon</string>
|
||||
<string name="release_31">
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="must_make_default_dialer">You have to make this app the default dialer app to make use of blocked numbers.</string>
|
||||
<string name="set_to_default">Set to default</string>
|
||||
<string name="call_number">Call number</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.3.10'
|
||||
ext.kotlin_version = '1.3.11'
|
||||
|
||||
repositories {
|
||||
google()
|
||||
|
|