create a vcf file contacts exporter
This commit is contained in:
parent
ca463d056b
commit
052e17bed6
|
@ -41,7 +41,7 @@ ext {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.simplemobiletools:commons:3.7.3'
|
implementation 'com.simplemobiletools:commons:3.7.4'
|
||||||
implementation 'joda-time:joda-time:2.9.9'
|
implementation 'joda-time:joda-time:2.9.9'
|
||||||
|
|
||||||
debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion"
|
debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion"
|
||||||
|
|
|
@ -33,6 +33,7 @@ val ANNIVERSARY = "ANNIVERSARY:"
|
||||||
val PHOTO = "PHOTO"
|
val PHOTO = "PHOTO"
|
||||||
val EMAIL = "EMAIL"
|
val EMAIL = "EMAIL"
|
||||||
val BASE64 = "BASE64"
|
val BASE64 = "BASE64"
|
||||||
|
val VERSION_2_1 = "VERSION:2.1"
|
||||||
|
|
||||||
// phone number/email types
|
// phone number/email types
|
||||||
val CELL = "CELL"
|
val CELL = "CELL"
|
||||||
|
@ -45,3 +46,4 @@ val WORK_FAX = "WORK;FAX"
|
||||||
val HOME_FAX = "HOME;FAX"
|
val HOME_FAX = "HOME;FAX"
|
||||||
val PAGER = "PAGER"
|
val PAGER = "PAGER"
|
||||||
val MOBILE = "MOBILE"
|
val MOBILE = "MOBILE"
|
||||||
|
val VOICE = "VOICE"
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
package com.simplemobiletools.contacts.helpers
|
package com.simplemobiletools.contacts.helpers
|
||||||
|
|
||||||
|
import android.provider.ContactsContract.CommonDataKinds
|
||||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.getFileOutputStream
|
import com.simplemobiletools.commons.extensions.getFileOutputStream
|
||||||
|
import com.simplemobiletools.commons.extensions.writeLn
|
||||||
import com.simplemobiletools.contacts.helpers.VcfExporter.ExportResult.*
|
import com.simplemobiletools.contacts.helpers.VcfExporter.ExportResult.*
|
||||||
import com.simplemobiletools.contacts.models.Contact
|
import com.simplemobiletools.contacts.models.Contact
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
@ -23,7 +25,28 @@ class VcfExporter() {
|
||||||
|
|
||||||
it.bufferedWriter().use { out ->
|
it.bufferedWriter().use { out ->
|
||||||
for (contact in contacts) {
|
for (contact in contacts) {
|
||||||
|
out.writeLn(BEGIN_VCARD)
|
||||||
|
out.writeLn(VERSION_2_1)
|
||||||
|
out.writeLn("$N${contact.surname};${contact.firstName};${contact.middleName};;")
|
||||||
|
|
||||||
|
contact.phoneNumbers.forEach {
|
||||||
|
out.writeLn("$TEL;${getPhoneNumberLabel(it.type)}:${it.value}")
|
||||||
|
}
|
||||||
|
|
||||||
|
contact.emails.forEach {
|
||||||
|
val type = getEmailTypeLabel(it.type)
|
||||||
|
val delimiterType = if (type.isEmpty()) "" else ";$type"
|
||||||
|
out.writeLn("$EMAIL$delimiterType:${it.value}")
|
||||||
|
}
|
||||||
|
|
||||||
|
contact.events.forEach {
|
||||||
|
if (it.type == CommonDataKinds.Event.TYPE_BIRTHDAY) {
|
||||||
|
out.writeLn("$BDAY:${it.value}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
out.writeLn(END_VCARD)
|
||||||
|
contactsExported++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,4 +57,22 @@ class VcfExporter() {
|
||||||
else -> EXPORT_OK
|
else -> EXPORT_OK
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getPhoneNumberLabel(type: Int) = when (type) {
|
||||||
|
CommonDataKinds.Phone.TYPE_MOBILE -> CELL
|
||||||
|
CommonDataKinds.Phone.TYPE_HOME -> HOME
|
||||||
|
CommonDataKinds.Phone.TYPE_WORK -> WORK
|
||||||
|
CommonDataKinds.Phone.TYPE_MAIN -> PREF
|
||||||
|
CommonDataKinds.Phone.TYPE_FAX_WORK -> WORK_FAX
|
||||||
|
CommonDataKinds.Phone.TYPE_FAX_HOME -> HOME_FAX
|
||||||
|
CommonDataKinds.Phone.TYPE_PAGER -> PAGER
|
||||||
|
else -> VOICE
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getEmailTypeLabel(type: Int) = when (type) {
|
||||||
|
CommonDataKinds.Email.TYPE_HOME -> HOME
|
||||||
|
CommonDataKinds.Email.TYPE_WORK -> WORK
|
||||||
|
CommonDataKinds.Email.TYPE_MOBILE -> MOBILE
|
||||||
|
else -> ""
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ import com.simplemobiletools.contacts.models.PhoneNumber
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.io.FileOutputStream
|
import java.io.FileOutputStream
|
||||||
|
|
||||||
|
|
||||||
class VcfImporter(val activity: SimpleActivity) {
|
class VcfImporter(val activity: SimpleActivity) {
|
||||||
enum class ImportResult {
|
enum class ImportResult {
|
||||||
IMPORT_FAIL, IMPORT_OK, IMPORT_PARTIAL
|
IMPORT_FAIL, IMPORT_OK, IMPORT_PARTIAL
|
||||||
|
@ -108,8 +107,8 @@ class VcfImporter(val activity: SimpleActivity) {
|
||||||
|
|
||||||
private fun getPhoneNumberTypeId(type: String, subType: String) = when (type) {
|
private fun getPhoneNumberTypeId(type: String, subType: String) = when (type) {
|
||||||
CELL -> CommonDataKinds.Phone.TYPE_MOBILE
|
CELL -> CommonDataKinds.Phone.TYPE_MOBILE
|
||||||
WORK -> CommonDataKinds.Phone.TYPE_WORK
|
|
||||||
HOME -> CommonDataKinds.Phone.TYPE_HOME
|
HOME -> CommonDataKinds.Phone.TYPE_HOME
|
||||||
|
WORK -> CommonDataKinds.Phone.TYPE_WORK
|
||||||
PREF, MAIN -> CommonDataKinds.Phone.TYPE_MAIN
|
PREF, MAIN -> CommonDataKinds.Phone.TYPE_MAIN
|
||||||
WORK_FAX -> CommonDataKinds.Phone.TYPE_FAX_WORK
|
WORK_FAX -> CommonDataKinds.Phone.TYPE_FAX_WORK
|
||||||
HOME_FAX -> CommonDataKinds.Phone.TYPE_FAX_HOME
|
HOME_FAX -> CommonDataKinds.Phone.TYPE_FAX_HOME
|
||||||
|
|
Loading…
Reference in New Issue