Loading src/java/com/android/ims/rcs/uce/eab/EabContactSyncController.java +9 −9 Original line number Diff line number Diff line Loading @@ -85,6 +85,10 @@ public class EabContactSyncController { if (updatedContact != null) { Log.d(TAG, "Contact changed count: " + updatedContact.getCount()); if (updatedContact.getCount() == 0) { return new ArrayList<>(); } // Delete the EAB phone number that not in contact provider (case 2). Updated phone // number(case 3) also delete in here and re-insert in next step. handlePhoneNumberDeletedCase(context, updatedContact); Loading Loading @@ -214,15 +218,11 @@ public class EabContactSyncController { } } if (deleteClause.length() > 1) { int number = context.getContentResolver().delete( EabProvider.CONTACT_URI, deleteClause.toString(), deleteClauseArgs.toArray(new String[0])); Log.d(TAG, "(Case 2, 3) handlePhoneNumberDeletedCase number count= " + number); } else { Log.d(TAG, "(Case 2, 3) handlePhoneNumberDeletedCase number count is empty."); } } /** Loading src/java/com/android/ims/rcs/uce/eab/EabControllerImpl.java +24 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.os.Handler; import android.os.Looper; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.TelephonyManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.RcsContactPresenceTuple; import android.telephony.ims.RcsContactPresenceTuple.ServiceCapabilities; Loading @@ -44,6 +45,9 @@ import android.text.format.Time; import android.util.Log; import android.util.TimeFormatException; import com.android.i18n.phonenumbers.NumberParseException; import com.android.i18n.phonenumbers.PhoneNumberUtil; import com.android.i18n.phonenumbers.Phonenumber; import com.android.ims.RcsFeatureManager; import com.android.ims.rcs.uce.UceController.UceControllerCallback; import com.android.internal.annotations.VisibleForTesting; Loading Loading @@ -186,7 +190,7 @@ public class EabControllerImpl implements EabController { // Update the capabilities for (RcsContactUceCapability capability : contactCapabilities) { String phoneNumber = getNumberFromUri(capability.getContactUri()); String phoneNumber = getNumberFromUri(mContext, capability.getContactUri()); Cursor c = mContext.getContentResolver().query( EabProvider.CONTACT_URI, null, EabProvider.ContactColumns.PHONE_NUMBER + "=?", Loading Loading @@ -246,7 +250,7 @@ public class EabControllerImpl implements EabController { // query EAB provider Uri queryUri = Uri.withAppendedPath( Uri.withAppendedPath(EabProvider.ALL_DATA_URI, String.valueOf(mSubId)), getNumberFromUri(contactUri)); getNumberFromUri(mContext, contactUri)); Cursor cursor = mContext.getContentResolver().query( queryUri, null, null, null, null); Loading Loading @@ -759,12 +763,28 @@ public class EabControllerImpl implements EabController { return cursor.getInt(cursor.getColumnIndex(column)); } private static String getNumberFromUri(Uri uri) { private static String getNumberFromUri(Context context, Uri uri) { String number = uri.getSchemeSpecificPart(); String[] numberParts = number.split("[@;:]"); if (numberParts.length == 0) { return null; } return numberParts[0]; return formatNumber(context, numberParts[0]); } private static String formatNumber(Context context, String number) { TelephonyManager manager = context.getSystemService(TelephonyManager.class); String simCountryIso = manager.getSimCountryIso(); if (simCountryIso != null) { simCountryIso = simCountryIso.toUpperCase(); PhoneNumberUtil util = PhoneNumberUtil.getInstance(); try { Phonenumber.PhoneNumber phoneNumber = util.parse(number, simCountryIso); return util.format(phoneNumber, PhoneNumberUtil.PhoneNumberFormat.E164); } catch (NumberParseException e) { Log.w(TAG, "formatNumber: could not format " + number + ", error: " + e); } } return number; } } tests/src/com/android/ims/rcs/uce/eab/EabContactSyncControllerTest.java +2 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,8 @@ public class EabContactSyncControllerTest extends ImsTestBase { // Insert 2 deleted contacts insertDeletedContactToContactProvider(1, 1); insertDeletedContactToContactProvider(2, 1); // Keep id:3 in contact provider insertContactToContactProvider(3, 3, 3, "12345678"); new EabContactSyncController().syncContactToEabProvider(mContext); Loading Loading
src/java/com/android/ims/rcs/uce/eab/EabContactSyncController.java +9 −9 Original line number Diff line number Diff line Loading @@ -85,6 +85,10 @@ public class EabContactSyncController { if (updatedContact != null) { Log.d(TAG, "Contact changed count: " + updatedContact.getCount()); if (updatedContact.getCount() == 0) { return new ArrayList<>(); } // Delete the EAB phone number that not in contact provider (case 2). Updated phone // number(case 3) also delete in here and re-insert in next step. handlePhoneNumberDeletedCase(context, updatedContact); Loading Loading @@ -214,15 +218,11 @@ public class EabContactSyncController { } } if (deleteClause.length() > 1) { int number = context.getContentResolver().delete( EabProvider.CONTACT_URI, deleteClause.toString(), deleteClauseArgs.toArray(new String[0])); Log.d(TAG, "(Case 2, 3) handlePhoneNumberDeletedCase number count= " + number); } else { Log.d(TAG, "(Case 2, 3) handlePhoneNumberDeletedCase number count is empty."); } } /** Loading
src/java/com/android/ims/rcs/uce/eab/EabControllerImpl.java +24 −4 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.os.Handler; import android.os.Looper; import android.os.PersistableBundle; import android.telephony.CarrierConfigManager; import android.telephony.TelephonyManager; import android.telephony.ims.ProvisioningManager; import android.telephony.ims.RcsContactPresenceTuple; import android.telephony.ims.RcsContactPresenceTuple.ServiceCapabilities; Loading @@ -44,6 +45,9 @@ import android.text.format.Time; import android.util.Log; import android.util.TimeFormatException; import com.android.i18n.phonenumbers.NumberParseException; import com.android.i18n.phonenumbers.PhoneNumberUtil; import com.android.i18n.phonenumbers.Phonenumber; import com.android.ims.RcsFeatureManager; import com.android.ims.rcs.uce.UceController.UceControllerCallback; import com.android.internal.annotations.VisibleForTesting; Loading Loading @@ -186,7 +190,7 @@ public class EabControllerImpl implements EabController { // Update the capabilities for (RcsContactUceCapability capability : contactCapabilities) { String phoneNumber = getNumberFromUri(capability.getContactUri()); String phoneNumber = getNumberFromUri(mContext, capability.getContactUri()); Cursor c = mContext.getContentResolver().query( EabProvider.CONTACT_URI, null, EabProvider.ContactColumns.PHONE_NUMBER + "=?", Loading Loading @@ -246,7 +250,7 @@ public class EabControllerImpl implements EabController { // query EAB provider Uri queryUri = Uri.withAppendedPath( Uri.withAppendedPath(EabProvider.ALL_DATA_URI, String.valueOf(mSubId)), getNumberFromUri(contactUri)); getNumberFromUri(mContext, contactUri)); Cursor cursor = mContext.getContentResolver().query( queryUri, null, null, null, null); Loading Loading @@ -759,12 +763,28 @@ public class EabControllerImpl implements EabController { return cursor.getInt(cursor.getColumnIndex(column)); } private static String getNumberFromUri(Uri uri) { private static String getNumberFromUri(Context context, Uri uri) { String number = uri.getSchemeSpecificPart(); String[] numberParts = number.split("[@;:]"); if (numberParts.length == 0) { return null; } return numberParts[0]; return formatNumber(context, numberParts[0]); } private static String formatNumber(Context context, String number) { TelephonyManager manager = context.getSystemService(TelephonyManager.class); String simCountryIso = manager.getSimCountryIso(); if (simCountryIso != null) { simCountryIso = simCountryIso.toUpperCase(); PhoneNumberUtil util = PhoneNumberUtil.getInstance(); try { Phonenumber.PhoneNumber phoneNumber = util.parse(number, simCountryIso); return util.format(phoneNumber, PhoneNumberUtil.PhoneNumberFormat.E164); } catch (NumberParseException e) { Log.w(TAG, "formatNumber: could not format " + number + ", error: " + e); } } return number; } }
tests/src/com/android/ims/rcs/uce/eab/EabContactSyncControllerTest.java +2 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,8 @@ public class EabContactSyncControllerTest extends ImsTestBase { // Insert 2 deleted contacts insertDeletedContactToContactProvider(1, 1); insertDeletedContactToContactProvider(2, 1); // Keep id:3 in contact provider insertContactToContactProvider(3, 3, 3, "12345678"); new EabContactSyncController().syncContactToEabProvider(mContext); Loading