mirror of
				https://github.com/SimpleMobileTools/Simple-Contacts.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	fix #125, parse a couple more contact details from WhatsApp intent
This commit is contained in:
		| @@ -2,6 +2,7 @@ package com.simplemobiletools.contacts.activities | |||||||
|  |  | ||||||
| import android.app.DatePickerDialog | import android.app.DatePickerDialog | ||||||
| import android.content.ClipData | import android.content.ClipData | ||||||
|  | import android.content.ContentValues | ||||||
| import android.content.Intent | import android.content.Intent | ||||||
| import android.graphics.drawable.ColorDrawable | import android.graphics.drawable.ColorDrawable | ||||||
| import android.net.Uri | import android.net.Uri | ||||||
| @@ -151,10 +152,14 @@ class EditContactActivity : ContactActivity() { | |||||||
|         if (contact!!.id == 0 && intent.extras?.containsKey(KEY_PHONE) == true && (action == Intent.ACTION_INSERT_OR_EDIT || action == Intent.ACTION_INSERT)) { |         if (contact!!.id == 0 && intent.extras?.containsKey(KEY_PHONE) == true && (action == Intent.ACTION_INSERT_OR_EDIT || action == Intent.ACTION_INSERT)) { | ||||||
|             val phoneNumber = intent.extras.get(KEY_PHONE)?.toString() ?: "" |             val phoneNumber = intent.extras.get(KEY_PHONE)?.toString() ?: "" | ||||||
|             contact!!.phoneNumbers.add(PhoneNumber(phoneNumber, DEFAULT_PHONE_NUMBER_TYPE)) |             contact!!.phoneNumbers.add(PhoneNumber(phoneNumber, DEFAULT_PHONE_NUMBER_TYPE)) | ||||||
|             setupPhoneNumbers() |  | ||||||
|  |  | ||||||
|             val contactFullName = intent.extras.get(KEY_NAME)?.toString() ?: "" |             contact!!.firstName = intent.extras.get(KEY_NAME)?.toString() ?: "" | ||||||
|             contact_first_name.setText(contactFullName) |  | ||||||
|  |             val data = intent.extras.getParcelableArrayList<ContentValues>("data") | ||||||
|  |             if (data != null) { | ||||||
|  |                 parseIntentData(data) | ||||||
|  |             } | ||||||
|  |             setupEditContact() | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         setupTypePickers() |         setupTypePickers() | ||||||
| @@ -308,14 +313,8 @@ class EditContactActivity : ContactActivity() { | |||||||
|     private fun setupEditContact() { |     private fun setupEditContact() { | ||||||
|         window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) |         window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) | ||||||
|         supportActionBar?.title = resources.getString(R.string.edit_contact) |         supportActionBar?.title = resources.getString(R.string.edit_contact) | ||||||
|         contact_prefix.setText(contact!!.prefix) |  | ||||||
|         contact_first_name.setText(contact!!.firstName) |  | ||||||
|         contact_middle_name.setText(contact!!.middleName) |  | ||||||
|         contact_surname.setText(contact!!.surname) |  | ||||||
|         contact_suffix.setText(contact!!.suffix) |  | ||||||
|  |  | ||||||
|         contact_source.text = getPublicContactSource(contact!!.source) |  | ||||||
|  |  | ||||||
|  |         setupNames() | ||||||
|         setupPhoneNumbers() |         setupPhoneNumbers() | ||||||
|         setupEmails() |         setupEmails() | ||||||
|         setupAddresses() |         setupAddresses() | ||||||
| @@ -324,6 +323,17 @@ class EditContactActivity : ContactActivity() { | |||||||
|         setupWebsites() |         setupWebsites() | ||||||
|         setupEvents() |         setupEvents() | ||||||
|         setupGroups() |         setupGroups() | ||||||
|  |         setupContactSource() | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private fun setupNames() { | ||||||
|  |         contact!!.apply { | ||||||
|  |             contact_prefix.setText(prefix) | ||||||
|  |             contact_first_name.setText(firstName) | ||||||
|  |             contact_middle_name.setText(middleName) | ||||||
|  |             contact_surname.setText(surname) | ||||||
|  |             contact_suffix.setText(suffix) | ||||||
|  |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private fun setupPhoneNumbers() { |     private fun setupPhoneNumbers() { | ||||||
| @@ -487,6 +497,10 @@ class EditContactActivity : ContactActivity() { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private fun setupContactSource() { | ||||||
|  |         contact_source.text = getPublicContactSource(contact!!.source) | ||||||
|  |     } | ||||||
|  |  | ||||||
|     private fun setupNewContact() { |     private fun setupNewContact() { | ||||||
|         supportActionBar?.title = resources.getString(R.string.new_contact) |         supportActionBar?.title = resources.getString(R.string.new_contact) | ||||||
|         val contactSource = if (hasContactPermissions()) config.lastUsedContactSource else SMT_PRIVATE |         val contactSource = if (hasContactPermissions()) config.lastUsedContactSource else SMT_PRIVATE | ||||||
| @@ -915,6 +929,44 @@ class EditContactActivity : ContactActivity() { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     private fun parseIntentData(data: ArrayList<ContentValues>) { | ||||||
|  |         data.forEach { | ||||||
|  |             when (it.get(CommonDataKinds.StructuredName.MIMETYPE)) { | ||||||
|  |                 CommonDataKinds.Email.CONTENT_ITEM_TYPE -> parseEmail(it) | ||||||
|  |                 CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE -> parseAddress(it) | ||||||
|  |                 CommonDataKinds.Organization.CONTENT_ITEM_TYPE -> parseOrganization(it) | ||||||
|  |                 CommonDataKinds.Event.CONTENT_ITEM_TYPE -> parseEvent(it) | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private fun parseEmail(contentValues: ContentValues) { | ||||||
|  |         val type = contentValues.getAsInteger(CommonDataKinds.Email.DATA2) ?: DEFAULT_EMAIL_TYPE | ||||||
|  |         val emailValue = contentValues.getAsString(CommonDataKinds.Email.DATA1) ?: return | ||||||
|  |         val email = Email(emailValue, type) | ||||||
|  |         contact!!.emails.add(email) | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private fun parseAddress(contentValues: ContentValues) { | ||||||
|  |         val type = contentValues.getAsInteger(CommonDataKinds.StructuredPostal.DATA2) ?: DEFAULT_ADDRESS_TYPE | ||||||
|  |         val addressValue = contentValues.getAsString(CommonDataKinds.StructuredPostal.DATA4) ?: return | ||||||
|  |         val address = Address(addressValue, type) | ||||||
|  |         contact!!.addresses.add(address) | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private fun parseOrganization(contentValues: ContentValues) { | ||||||
|  |         val company = contentValues.getAsString(CommonDataKinds.Organization.DATA5) | ||||||
|  |         val jobPosition = contentValues.getAsString(CommonDataKinds.Organization.DATA4) | ||||||
|  |         contact!!.organization = Organization(company, jobPosition) | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private fun parseEvent(contentValues: ContentValues) { | ||||||
|  |         val type = contentValues.getAsInteger(CommonDataKinds.Event.DATA2) ?: DEFAULT_EVENT_TYPE | ||||||
|  |         val eventValue = contentValues.getAsString(CommonDataKinds.Event.DATA1) | ||||||
|  |         val event = Event(eventValue, type) | ||||||
|  |         contact!!.events.add(event) | ||||||
|  |     } | ||||||
|  |  | ||||||
|     private fun startTakePhotoIntent() { |     private fun startTakePhotoIntent() { | ||||||
|         val uri = getCachePhotoUri() |         val uri = getCachePhotoUri() | ||||||
|         lastPhotoIntentUri = uri |         lastPhotoIntentUri = uri | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user