Loading api/system-current.txt +10 −7 Original line number Diff line number Diff line Loading @@ -7248,13 +7248,6 @@ package android.telephony { field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR; } public class CallerInfo { method @Nullable public android.net.Uri getContactDisplayPhotoUri(); method public long getContactId(); method @Nullable public String getName(); method @Nullable public String getPhoneNumber(); } public class CarrierConfigManager { method @NonNull public static android.os.PersistableBundle getDefaultConfig(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle); Loading Loading @@ -7837,6 +7830,12 @@ package android.telephony { field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneNumberRange> CREATOR; } public class PhoneNumberUtils { method @NonNull public static String getUsernameFromUriNumber(@NonNull String); method public static boolean isUriNumber(@Nullable String); method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String); } public class PhoneStateListener { method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes); method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onCallDisconnectCauseChanged(int, int); Loading Loading @@ -8117,6 +8116,7 @@ package android.telephony { public final class SmsManager { method public boolean disableCellBroadcastRange(int, int, int); method public boolean enableCellBroadcastRange(int, int, int); method public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>); } Loading @@ -8134,6 +8134,7 @@ package android.telephony { method public void requestEmbeddedSubscriptionInfoListRefresh(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPreferredDataSubscriptionId(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSubscriptionEnabled(int, boolean); field @NonNull public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI; Loading Loading @@ -8202,10 +8203,12 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getDataActivationState(); method @Deprecated public boolean getDataEnabled(); method @Deprecated public boolean getDataEnabled(int); method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode(); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain(); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst(); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping(); method public int getMaxNumberOfSimultaneouslyActiveSims(); method public static long getMaxNumberVerificationTimeoutMillis(); method @NonNull public String getNetworkCountryIso(int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask(); api/test-current.txt +9 −0 Original line number Diff line number Diff line Loading @@ -2866,6 +2866,9 @@ package android.telephony { public class PhoneNumberUtils { method public static int getMinMatchForTest(); method @NonNull public static String getUsernameFromUriNumber(@NonNull String); method public static boolean isUriNumber(@Nullable String); method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String); method public static void setMinMatchForTest(int); } Loading @@ -2889,6 +2892,7 @@ package android.telephony { public final class SmsManager { method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int checkSmsShortCodeDestination(String, String); method public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String); field public static final int SMS_CATEGORY_FREE_SHORT_CODE = 1; // 0x1 field public static final int SMS_CATEGORY_NOT_SHORT_CODE = 0; // 0x0 field public static final int SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3; // 0x3 Loading @@ -2896,9 +2900,14 @@ package android.telephony { field public static final int SMS_CATEGORY_STANDARD_SHORT_CODE = 2; // 0x2 } public class SubscriptionManager { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int); } public class TelephonyManager { method public int checkCarrierPrivilegesForPackage(String); method public int getCarrierIdListVersion(); method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag(); method @NonNull public String getNetworkCountryIso(int); method public android.util.Pair<java.lang.Integer,java.lang.Integer> getRadioHalVersion(); Loading core/java/android/provider/CallLog.java +1 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.provider.ContactsContract.CommonDataKinds.Callable; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.DataUsageFeedback; import android.telecom.CallerInfo; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; Loading @@ -42,7 +43,6 @@ import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.util.Log; import android.telephony.CallerInfo; import com.android.internal.telephony.PhoneConstants; import java.util.List; Loading telephony/java/android/telephony/CallerInfo.java→telecomm/java/android/telecom/CallerInfo.java +32 −48 Original line number Diff line number Diff line Loading @@ -14,10 +14,9 @@ * limitations under the License. */ package android.telephony; package android.telecom; import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.ContentResolver; Loading @@ -33,8 +32,10 @@ import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.PhoneLookup; import android.provider.ContactsContract.RawContacts; import android.telephony.PhoneNumberUtils; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import com.android.i18n.phonenumbers.NumberParseException; import com.android.i18n.phonenumbers.PhoneNumberUtil; Loading @@ -50,10 +51,9 @@ import java.util.Locale; * * {@hide} */ @SystemApi public class CallerInfo { private static final String TAG = "CallerInfo"; private static final boolean VDBG = Rlog.isLoggable(TAG, Log.VERBOSE); private static final boolean VDBG = Log.VERBOSE; /** @hide */ public static final long USER_TYPE_CURRENT = 0; Loading Loading @@ -215,7 +215,7 @@ public class CallerInfo { info.contactExists = false; info.userType = USER_TYPE_CURRENT; if (VDBG) Rlog.v(TAG, "getCallerInfo() based on cursor..."); if (VDBG) Log.v(TAG, "getCallerInfo() based on cursor..."); if (cursor != null) { if (cursor.moveToFirst()) { Loading Loading @@ -263,7 +263,7 @@ public class CallerInfo { if (contactId != 0 && !Contacts.isEnterpriseContactId(contactId)) { info.contactIdOrZero = contactId; if (VDBG) { Rlog.v(TAG, "==> got info.contactIdOrZero: " + info.contactIdOrZero); Log.v(TAG, "==> got info.contactIdOrZero: " + info.contactIdOrZero); } } if (Contacts.isEnterpriseContactId(contactId)) { Loading @@ -271,7 +271,7 @@ public class CallerInfo { } } else { // No valid columnIndex, so we can't look up person_id. Rlog.w(TAG, "Couldn't find contact_id column for " + contactRef); Log.w(TAG, "Couldn't find contact_id column for " + contactRef); // Watch out: this means that anything that depends on // person_id will be broken (like contact photo lookups in // the in-call UI, for example.) Loading Loading @@ -356,7 +356,7 @@ public class CallerInfo { info = getCallerInfo(context, contactRef, cr.query(contactRef, null, null, null, null)); } catch (RuntimeException re) { Rlog.e(TAG, "Error getting caller info.", re); Log.e(TAG, re, "Error getting caller info."); } } return info; Loading @@ -376,7 +376,7 @@ public class CallerInfo { */ @UnsupportedAppUsage public static CallerInfo getCallerInfo(Context context, String number) { if (VDBG) Rlog.v(TAG, "getCallerInfo() based on number..."); if (VDBG) Log.v(TAG, "getCallerInfo() based on number..."); int subId = SubscriptionManager.getDefaultSubscriptionId(); return getCallerInfo(context, number, subId); Loading Loading @@ -407,8 +407,8 @@ public class CallerInfo { // shortcut and skip the query. if (PhoneNumberUtils.isLocalEmergencyNumber(context, number)) { return new CallerInfo().markAsEmergency(context); } else if (PhoneNumberUtils.isVoiceMailNumber(subId, number)) { return new CallerInfo().markAsVoiceMail(); } else if (PhoneNumberUtils.isVoiceMailNumber(null, subId, number)) { return new CallerInfo().markAsVoiceMail(context, subId); } Uri contactUri = Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, Loading Loading @@ -542,36 +542,20 @@ public class CallerInfo { } /** * Mark this CallerInfo as a voicemail call. The voicemail label * is obtained from the telephony manager. Caller must hold the * READ_PHONE_STATE permission otherwise the phoneNumber will be * set to null. * @return this instance. */ // TODO: As in the emergency number handling, we end up writing a // string in the phone number field. /* package */ CallerInfo markAsVoiceMail() { int subId = SubscriptionManager.getDefaultSubscriptionId(); return markAsVoiceMail(subId); } /* package */ CallerInfo markAsVoiceMail(int subId) { /* package */ CallerInfo markAsVoiceMail(Context context, int subId) { mIsVoiceMail = true; try { String voiceMailLabel = TelephonyManager.getDefault().getVoiceMailAlphaTag(subId); phoneNumber = voiceMailLabel; phoneNumber = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(subId) .getVoiceMailAlphaTag(); } catch (SecurityException se) { // Should never happen: if this process does not have // permission to retrieve VM tag, it should not have // permission to retrieve VM number and would not call // this method. // Leave phoneNumber untouched. Rlog.e(TAG, "Cannot access VoiceMail.", se); Log.e(TAG, se, "Cannot access VoiceMail."); } // TODO: There is no voicemail picture? // FIXME: FIND ANOTHER ICON Loading Loading @@ -630,10 +614,10 @@ public class CallerInfo { // So instead, figure out the column to use for person_id by just // looking at the URI itself. if (VDBG) Rlog.v(TAG, "- getColumnIndexForPersonId: contactRef URI = '" if (VDBG) Log.v(TAG, "- getColumnIndexForPersonId: contactRef URI = '" + contactRef + "'..."); // Warning: Do not enable the following logging (due to ANR risk.) // if (VDBG) Rlog.v(TAG, "- MIME type: " // if (VDBG) Log.v(TAG, "- MIME type: " // + context.getContentResolver().getType(contactRef)); String url = contactRef.toString(); Loading @@ -641,25 +625,25 @@ public class CallerInfo { if (url.startsWith("content://com.android.contacts/data/phones")) { // Direct lookup in the Phone table. // MIME type: Phone.CONTENT_ITEM_TYPE (= "vnd.android.cursor.item/phone_v2") if (VDBG) Rlog.v(TAG, "'data/phones' URI; using RawContacts.CONTACT_ID"); if (VDBG) Log.v(TAG, "'data/phones' URI; using RawContacts.CONTACT_ID"); columnName = RawContacts.CONTACT_ID; } else if (url.startsWith("content://com.android.contacts/data")) { // Direct lookup in the Data table. // MIME type: Data.CONTENT_TYPE (= "vnd.android.cursor.dir/data") if (VDBG) Rlog.v(TAG, "'data' URI; using Data.CONTACT_ID"); if (VDBG) Log.v(TAG, "'data' URI; using Data.CONTACT_ID"); // (Note Data.CONTACT_ID and RawContacts.CONTACT_ID are equivalent.) columnName = Data.CONTACT_ID; } else if (url.startsWith("content://com.android.contacts/phone_lookup")) { // Lookup in the PhoneLookup table, which provides "fuzzy matching" // for phone numbers. // MIME type: PhoneLookup.CONTENT_TYPE (= "vnd.android.cursor.dir/phone_lookup") if (VDBG) Rlog.v(TAG, "'phone_lookup' URI; using PhoneLookup._ID"); if (VDBG) Log.v(TAG, "'phone_lookup' URI; using PhoneLookup._ID"); columnName = PhoneLookup._ID; } else { Rlog.w(TAG, "Unexpected prefix for contactRef '" + url + "'"); Log.w(TAG, "Unexpected prefix for contactRef '" + url + "'"); } int columnIndex = (columnName != null) ? cursor.getColumnIndex(columnName) : -1; if (VDBG) Rlog.v(TAG, "==> Using column '" + columnName if (VDBG) Log.v(TAG, "==> Using column '" + columnName + "' (columnIndex = " + columnIndex + ") for person_id lookup..."); return columnIndex; } Loading Loading @@ -689,7 +673,7 @@ public class CallerInfo { * @hide */ public static String getGeoDescription(Context context, String number) { if (VDBG) Rlog.v(TAG, "getGeoDescription('" + number + "')..."); if (VDBG) Log.v(TAG, "getGeoDescription('" + number + "')..."); if (TextUtils.isEmpty(number)) { return null; Loading @@ -702,18 +686,18 @@ public class CallerInfo { String countryIso = getCurrentCountryIso(context, locale); PhoneNumber pn = null; try { if (VDBG) Rlog.v(TAG, "parsing '" + number if (VDBG) Log.v(TAG, "parsing '" + number + "' for countryIso '" + countryIso + "'..."); pn = util.parse(number, countryIso); if (VDBG) Rlog.v(TAG, "- parsed number: " + pn); if (VDBG) Log.v(TAG, "- parsed number: " + pn); } catch (NumberParseException e) { Rlog.w(TAG, "getGeoDescription: NumberParseException for incoming number '" + Rlog.pii(TAG, number) + "'"); Log.w(TAG, "getGeoDescription: NumberParseException for incoming number '" + Log.pii(number) + "'"); } if (pn != null) { String description = geocoder.getDescriptionForNumber(pn, locale); if (VDBG) Rlog.v(TAG, "- got description: '" + description + "'"); if (VDBG) Log.v(TAG, "- got description: '" + description + "'"); return description; } else { return null; Loading @@ -733,12 +717,12 @@ public class CallerInfo { if (country != null) { countryIso = country.getCountryIso(); } else { Rlog.e(TAG, "CountryDetector.detectCountry() returned null."); Log.e(TAG, new Exception(), "CountryDetector.detectCountry() returned null."); } } if (countryIso == null) { countryIso = locale.getCountry(); Rlog.w(TAG, "No CountryDetector; falling back to countryIso based on locale: " Log.w(TAG, "No CountryDetector; falling back to countryIso based on locale: " + countryIso); } return countryIso; Loading telephony/java/android/telephony/CallerInfoAsyncQuery.java→telecomm/java/android/telecom/CallerInfoAsyncQuery.java +25 −23 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ * limitations under the License. */ package android.telephony; package android.telecom; import android.app.ActivityManager; import android.content.AsyncQueryHandler; Loading @@ -31,6 +31,8 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; import android.provider.ContactsContract.PhoneLookup; import android.telephony.PhoneNumberUtils; import android.telephony.SubscriptionManager; import android.text.TextUtils; import java.util.ArrayList; import java.util.List; Loading Loading @@ -100,12 +102,12 @@ public class CallerInfoAsyncQuery { */ static ContentResolver getCurrentProfileContentResolver(Context context) { if (DBG) Rlog.d(LOG_TAG, "Trying to get current content resolver..."); if (DBG) Log.d(LOG_TAG, "Trying to get current content resolver..."); final int currentUser = ActivityManager.getCurrentUser(); final int myUser = UserManager.get(context).getUserHandle(); if (DBG) Rlog.d(LOG_TAG, "myUser=" + myUser + "currentUser=" + currentUser); if (DBG) Log.d(LOG_TAG, "myUser=" + myUser + "currentUser=" + currentUser); if (myUser != currentUser) { final Context otherContext; Loading @@ -114,7 +116,7 @@ public class CallerInfoAsyncQuery { /* flags =*/ 0, UserHandle.of(currentUser)); return otherContext.getContentResolver(); } catch (NameNotFoundException e) { Rlog.e(LOG_TAG, "Can't find self package", e); Log.e(LOG_TAG, e, "Can't find self package"); // Fall back to the primary user. } } Loading Loading @@ -179,13 +181,13 @@ public class CallerInfoAsyncQuery { // However, if there is any code that this Handler calls (such as in // super.handleMessage) that DOES place unexpected messages on the // queue, then we need pass these messages on. Rlog.i(LOG_TAG, "Unexpected command (CookieWrapper is null): " + msg.what + Log.i(LOG_TAG, "Unexpected command (CookieWrapper is null): " + msg.what + " ignored by CallerInfoWorkerHandler, passing onto parent."); super.handleMessage(msg); } else { Rlog.d(LOG_TAG, "Processing event: " + cw.event + " token (arg1): " + msg.arg1 + Log.d(LOG_TAG, "Processing event: " + cw.event + " token (arg1): " + msg.arg1 + " command: " + msg.what + " query URI: " + sanitizeUriToString(args.uri)); switch (cw.event) { Loading Loading @@ -226,7 +228,7 @@ public class CallerInfoAsyncQuery { cw.geoDescription = CallerInfo.getGeoDescription(mContext, cw.number); final long duration = SystemClock.elapsedRealtime() - startTimeMillis; if (duration > 500) { if (DBG) Rlog.d(LOG_TAG, "[handleGeoDescription]" + if (DBG) Log.d(LOG_TAG, "[handleGeoDescription]" + "Spends long time to retrieve Geo description: " + duration); } } Loading Loading @@ -263,7 +265,7 @@ public class CallerInfoAsyncQuery { */ @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { Rlog.d(LOG_TAG, "##### onQueryComplete() ##### query complete for token: " + token); Log.d(LOG_TAG, "##### onQueryComplete() ##### query complete for token: " + token); //get the cookie and notify the listener. CookieWrapper cw = (CookieWrapper) cookie; Loading @@ -272,7 +274,7 @@ public class CallerInfoAsyncQuery { // from within this code. // However, if there is any code that calls this method, we should // check the parameters to make sure they're viable. Rlog.i(LOG_TAG, "Cookie is null, ignoring onQueryComplete() request."); Log.i(LOG_TAG, "Cookie is null, ignoring onQueryComplete() request."); if (cursor != null) { cursor.close(); } Loading Loading @@ -321,16 +323,16 @@ public class CallerInfoAsyncQuery { // comments at the top of CallerInfo class). mCallerInfo = new CallerInfo().markAsEmergency(mContext); } else if (cw.event == EVENT_VOICEMAIL_NUMBER) { mCallerInfo = new CallerInfo().markAsVoiceMail(cw.subId); mCallerInfo = new CallerInfo().markAsVoiceMail(mContext, cw.subId); } else { mCallerInfo = CallerInfo.getCallerInfo(mContext, mQueryUri, cursor); if (DBG) Rlog.d(LOG_TAG, "==> Got mCallerInfo: " + mCallerInfo); if (DBG) Log.d(LOG_TAG, "==> Got mCallerInfo: " + mCallerInfo); CallerInfo newCallerInfo = CallerInfo.doSecondaryLookupIfNecessary( mContext, cw.number, mCallerInfo); if (newCallerInfo != mCallerInfo) { mCallerInfo = newCallerInfo; if (DBG) Rlog.d(LOG_TAG, "#####async contact look up with numeric username" if (DBG) Log.d(LOG_TAG, "#####async contact look up with numeric username" + mCallerInfo); } Loading @@ -346,7 +348,7 @@ public class CallerInfoAsyncQuery { // the geo description, so it would be unnecessary to query it. if (ENABLE_UNKNOWN_NUMBER_GEO_DESCRIPTION) { if (TextUtils.isEmpty(mCallerInfo.getName())) { if (DBG) Rlog.d(LOG_TAG, "start querying geo description"); if (DBG) Log.d(LOG_TAG, "start querying geo description"); cw.event = EVENT_GET_GEO_DESCRIPTION; startQuery(token, cw, null, null, null, null, null); return; Loading @@ -354,7 +356,7 @@ public class CallerInfoAsyncQuery { } } if (DBG) Rlog.d(LOG_TAG, "constructing CallerInfo object for token: " + token); if (DBG) Log.d(LOG_TAG, "constructing CallerInfo object for token: " + token); //notify that we can clean up the queue after this. CookieWrapper endMarker = new CookieWrapper(); Loading @@ -367,14 +369,14 @@ public class CallerInfoAsyncQuery { mPendingListenerCallbacks.add(new Runnable() { @Override public void run() { if (DBG) Rlog.d(LOG_TAG, "notifying listener: " if (DBG) Log.d(LOG_TAG, "notifying listener: " + cw.listener.getClass().toString() + " for token: " + token + mCallerInfo); cw.listener.onQueryComplete(token, cw.cookie, mCallerInfo); } }); } else { Rlog.w(LOG_TAG, "There is no listener to notify for this query."); Log.w(LOG_TAG, "There is no listener to notify for this query."); } if (cursor != null) { Loading @@ -399,7 +401,7 @@ public class CallerInfoAsyncQuery { CallerInfoAsyncQuery c = new CallerInfoAsyncQuery(); c.allocate(context, contactRef); if (DBG) Rlog.d(LOG_TAG, "starting query for URI: " + contactRef + " handler: " + c.toString()); if (DBG) Log.d(LOG_TAG, "starting query for URI: " + contactRef + " handler: " + c.toString()); //create cookieWrapper, start query CookieWrapper cw = new CookieWrapper(); Loading Loading @@ -445,9 +447,9 @@ public class CallerInfoAsyncQuery { OnQueryCompleteListener listener, Object cookie, int subId) { if (DBG) { Rlog.d(LOG_TAG, "##### CallerInfoAsyncQuery startQuery()... #####"); Rlog.d(LOG_TAG, "- number: " + /*number*/ "xxxxxxx"); Rlog.d(LOG_TAG, "- cookie: " + cookie); Log.d(LOG_TAG, "##### CallerInfoAsyncQuery startQuery()... #####"); Log.d(LOG_TAG, "- number: " + /*number*/ "xxxxxxx"); Log.d(LOG_TAG, "- cookie: " + cookie); } // Construct the URI object and query params, and start the query. Loading @@ -459,7 +461,7 @@ public class CallerInfoAsyncQuery { .build(); if (DBG) { Rlog.d(LOG_TAG, "==> contactRef: " + sanitizeUriToString(contactRef)); Log.d(LOG_TAG, "==> contactRef: " + sanitizeUriToString(contactRef)); } CallerInfoAsyncQuery c = new CallerInfoAsyncQuery(); Loading Loading @@ -496,8 +498,8 @@ public class CallerInfoAsyncQuery { */ public void addQueryListener(int token, OnQueryCompleteListener listener, Object cookie) { if (DBG) Rlog.d(LOG_TAG, "adding listener to query: " + sanitizeUriToString(mHandler.mQueryUri) + " handler: " + mHandler.toString()); if (DBG) Log.d(LOG_TAG, "adding listener to query: " + sanitizeUriToString(mHandler.mQueryUri) + " handler: " + mHandler.toString()); //create cookieWrapper, add query request to end of queue. CookieWrapper cw = new CookieWrapper(); Loading Loading
api/system-current.txt +10 −7 Original line number Diff line number Diff line Loading @@ -7248,13 +7248,6 @@ package android.telephony { field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR; } public class CallerInfo { method @Nullable public android.net.Uri getContactDisplayPhotoUri(); method public long getContactId(); method @Nullable public String getName(); method @Nullable public String getPhoneNumber(); } public class CarrierConfigManager { method @NonNull public static android.os.PersistableBundle getDefaultConfig(); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void overrideConfig(int, @Nullable android.os.PersistableBundle); Loading Loading @@ -7837,6 +7830,12 @@ package android.telephony { field @NonNull public static final android.os.Parcelable.Creator<android.telephony.PhoneNumberRange> CREATOR; } public class PhoneNumberUtils { method @NonNull public static String getUsernameFromUriNumber(@NonNull String); method public static boolean isUriNumber(@Nullable String); method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String); } public class PhoneStateListener { method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes); method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onCallDisconnectCauseChanged(int, int); Loading Loading @@ -8117,6 +8116,7 @@ package android.telephony { public final class SmsManager { method public boolean disableCellBroadcastRange(int, int, int); method public boolean enableCellBroadcastRange(int, int, int); method public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void sendMultipartTextMessageWithoutPersisting(String, String, java.util.List<java.lang.String>, java.util.List<android.app.PendingIntent>, java.util.List<android.app.PendingIntent>); } Loading @@ -8134,6 +8134,7 @@ package android.telephony { method public void requestEmbeddedSubscriptionInfoListRefresh(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setPreferredDataSubscriptionId(int, boolean, @Nullable java.util.concurrent.Executor, @Nullable java.util.function.Consumer<java.lang.Integer>); method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSubscriptionEnabled(int, boolean); field @NonNull public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI; Loading Loading @@ -8202,10 +8203,12 @@ package android.telephony { method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getDataActivationState(); method @Deprecated public boolean getDataEnabled(); method @Deprecated public boolean getDataEnabled(int); method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean getEmergencyCallbackMode(); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimDomain(); method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getIsimIst(); method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping(); method public int getMaxNumberOfSimultaneouslyActiveSims(); method public static long getMaxNumberVerificationTimeoutMillis(); method @NonNull public String getNetworkCountryIso(int); method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask();
api/test-current.txt +9 −0 Original line number Diff line number Diff line Loading @@ -2866,6 +2866,9 @@ package android.telephony { public class PhoneNumberUtils { method public static int getMinMatchForTest(); method @NonNull public static String getUsernameFromUriNumber(@NonNull String); method public static boolean isUriNumber(@Nullable String); method public static boolean isVoiceMailNumber(@NonNull android.content.Context, int, @Nullable String); method public static void setMinMatchForTest(int); } Loading @@ -2889,6 +2892,7 @@ package android.telephony { public final class SmsManager { method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public int checkSmsShortCodeDestination(String, String); method public void sendMultipartTextMessage(@NonNull String, @NonNull String, @NonNull java.util.List<java.lang.String>, @Nullable java.util.List<android.app.PendingIntent>, @Nullable java.util.List<android.app.PendingIntent>, @NonNull String); field public static final int SMS_CATEGORY_FREE_SHORT_CODE = 1; // 0x1 field public static final int SMS_CATEGORY_NOT_SHORT_CODE = 0; // 0x0 field public static final int SMS_CATEGORY_POSSIBLE_PREMIUM_SHORT_CODE = 3; // 0x3 Loading @@ -2896,9 +2900,14 @@ package android.telephony { field public static final int SMS_CATEGORY_STANDARD_SHORT_CODE = 2; // 0x2 } public class SubscriptionManager { method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultVoiceSubscriptionId(int); } public class TelephonyManager { method public int checkCarrierPrivilegesForPackage(String); method public int getCarrierIdListVersion(); method @Nullable public static android.content.ComponentName getDefaultRespondViaMessageApplication(@NonNull android.content.Context, boolean); method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public String getLine1AlphaTag(); method @NonNull public String getNetworkCountryIso(int); method public android.util.Pair<java.lang.Integer,java.lang.Integer> getRadioHalVersion(); Loading
core/java/android/provider/CallLog.java +1 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import android.provider.ContactsContract.CommonDataKinds.Callable; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.DataUsageFeedback; import android.telecom.CallerInfo; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; Loading @@ -42,7 +43,6 @@ import android.telephony.PhoneNumberUtils; import android.text.TextUtils; import android.util.Log; import android.telephony.CallerInfo; import com.android.internal.telephony.PhoneConstants; import java.util.List; Loading
telephony/java/android/telephony/CallerInfo.java→telecomm/java/android/telecom/CallerInfo.java +32 −48 Original line number Diff line number Diff line Loading @@ -14,10 +14,9 @@ * limitations under the License. */ package android.telephony; package android.telecom; import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.ContentResolver; Loading @@ -33,8 +32,10 @@ import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.Data; import android.provider.ContactsContract.PhoneLookup; import android.provider.ContactsContract.RawContacts; import android.telephony.PhoneNumberUtils; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import com.android.i18n.phonenumbers.NumberParseException; import com.android.i18n.phonenumbers.PhoneNumberUtil; Loading @@ -50,10 +51,9 @@ import java.util.Locale; * * {@hide} */ @SystemApi public class CallerInfo { private static final String TAG = "CallerInfo"; private static final boolean VDBG = Rlog.isLoggable(TAG, Log.VERBOSE); private static final boolean VDBG = Log.VERBOSE; /** @hide */ public static final long USER_TYPE_CURRENT = 0; Loading Loading @@ -215,7 +215,7 @@ public class CallerInfo { info.contactExists = false; info.userType = USER_TYPE_CURRENT; if (VDBG) Rlog.v(TAG, "getCallerInfo() based on cursor..."); if (VDBG) Log.v(TAG, "getCallerInfo() based on cursor..."); if (cursor != null) { if (cursor.moveToFirst()) { Loading Loading @@ -263,7 +263,7 @@ public class CallerInfo { if (contactId != 0 && !Contacts.isEnterpriseContactId(contactId)) { info.contactIdOrZero = contactId; if (VDBG) { Rlog.v(TAG, "==> got info.contactIdOrZero: " + info.contactIdOrZero); Log.v(TAG, "==> got info.contactIdOrZero: " + info.contactIdOrZero); } } if (Contacts.isEnterpriseContactId(contactId)) { Loading @@ -271,7 +271,7 @@ public class CallerInfo { } } else { // No valid columnIndex, so we can't look up person_id. Rlog.w(TAG, "Couldn't find contact_id column for " + contactRef); Log.w(TAG, "Couldn't find contact_id column for " + contactRef); // Watch out: this means that anything that depends on // person_id will be broken (like contact photo lookups in // the in-call UI, for example.) Loading Loading @@ -356,7 +356,7 @@ public class CallerInfo { info = getCallerInfo(context, contactRef, cr.query(contactRef, null, null, null, null)); } catch (RuntimeException re) { Rlog.e(TAG, "Error getting caller info.", re); Log.e(TAG, re, "Error getting caller info."); } } return info; Loading @@ -376,7 +376,7 @@ public class CallerInfo { */ @UnsupportedAppUsage public static CallerInfo getCallerInfo(Context context, String number) { if (VDBG) Rlog.v(TAG, "getCallerInfo() based on number..."); if (VDBG) Log.v(TAG, "getCallerInfo() based on number..."); int subId = SubscriptionManager.getDefaultSubscriptionId(); return getCallerInfo(context, number, subId); Loading Loading @@ -407,8 +407,8 @@ public class CallerInfo { // shortcut and skip the query. if (PhoneNumberUtils.isLocalEmergencyNumber(context, number)) { return new CallerInfo().markAsEmergency(context); } else if (PhoneNumberUtils.isVoiceMailNumber(subId, number)) { return new CallerInfo().markAsVoiceMail(); } else if (PhoneNumberUtils.isVoiceMailNumber(null, subId, number)) { return new CallerInfo().markAsVoiceMail(context, subId); } Uri contactUri = Uri.withAppendedPath(PhoneLookup.ENTERPRISE_CONTENT_FILTER_URI, Loading Loading @@ -542,36 +542,20 @@ public class CallerInfo { } /** * Mark this CallerInfo as a voicemail call. The voicemail label * is obtained from the telephony manager. Caller must hold the * READ_PHONE_STATE permission otherwise the phoneNumber will be * set to null. * @return this instance. */ // TODO: As in the emergency number handling, we end up writing a // string in the phone number field. /* package */ CallerInfo markAsVoiceMail() { int subId = SubscriptionManager.getDefaultSubscriptionId(); return markAsVoiceMail(subId); } /* package */ CallerInfo markAsVoiceMail(int subId) { /* package */ CallerInfo markAsVoiceMail(Context context, int subId) { mIsVoiceMail = true; try { String voiceMailLabel = TelephonyManager.getDefault().getVoiceMailAlphaTag(subId); phoneNumber = voiceMailLabel; phoneNumber = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(subId) .getVoiceMailAlphaTag(); } catch (SecurityException se) { // Should never happen: if this process does not have // permission to retrieve VM tag, it should not have // permission to retrieve VM number and would not call // this method. // Leave phoneNumber untouched. Rlog.e(TAG, "Cannot access VoiceMail.", se); Log.e(TAG, se, "Cannot access VoiceMail."); } // TODO: There is no voicemail picture? // FIXME: FIND ANOTHER ICON Loading Loading @@ -630,10 +614,10 @@ public class CallerInfo { // So instead, figure out the column to use for person_id by just // looking at the URI itself. if (VDBG) Rlog.v(TAG, "- getColumnIndexForPersonId: contactRef URI = '" if (VDBG) Log.v(TAG, "- getColumnIndexForPersonId: contactRef URI = '" + contactRef + "'..."); // Warning: Do not enable the following logging (due to ANR risk.) // if (VDBG) Rlog.v(TAG, "- MIME type: " // if (VDBG) Log.v(TAG, "- MIME type: " // + context.getContentResolver().getType(contactRef)); String url = contactRef.toString(); Loading @@ -641,25 +625,25 @@ public class CallerInfo { if (url.startsWith("content://com.android.contacts/data/phones")) { // Direct lookup in the Phone table. // MIME type: Phone.CONTENT_ITEM_TYPE (= "vnd.android.cursor.item/phone_v2") if (VDBG) Rlog.v(TAG, "'data/phones' URI; using RawContacts.CONTACT_ID"); if (VDBG) Log.v(TAG, "'data/phones' URI; using RawContacts.CONTACT_ID"); columnName = RawContacts.CONTACT_ID; } else if (url.startsWith("content://com.android.contacts/data")) { // Direct lookup in the Data table. // MIME type: Data.CONTENT_TYPE (= "vnd.android.cursor.dir/data") if (VDBG) Rlog.v(TAG, "'data' URI; using Data.CONTACT_ID"); if (VDBG) Log.v(TAG, "'data' URI; using Data.CONTACT_ID"); // (Note Data.CONTACT_ID and RawContacts.CONTACT_ID are equivalent.) columnName = Data.CONTACT_ID; } else if (url.startsWith("content://com.android.contacts/phone_lookup")) { // Lookup in the PhoneLookup table, which provides "fuzzy matching" // for phone numbers. // MIME type: PhoneLookup.CONTENT_TYPE (= "vnd.android.cursor.dir/phone_lookup") if (VDBG) Rlog.v(TAG, "'phone_lookup' URI; using PhoneLookup._ID"); if (VDBG) Log.v(TAG, "'phone_lookup' URI; using PhoneLookup._ID"); columnName = PhoneLookup._ID; } else { Rlog.w(TAG, "Unexpected prefix for contactRef '" + url + "'"); Log.w(TAG, "Unexpected prefix for contactRef '" + url + "'"); } int columnIndex = (columnName != null) ? cursor.getColumnIndex(columnName) : -1; if (VDBG) Rlog.v(TAG, "==> Using column '" + columnName if (VDBG) Log.v(TAG, "==> Using column '" + columnName + "' (columnIndex = " + columnIndex + ") for person_id lookup..."); return columnIndex; } Loading Loading @@ -689,7 +673,7 @@ public class CallerInfo { * @hide */ public static String getGeoDescription(Context context, String number) { if (VDBG) Rlog.v(TAG, "getGeoDescription('" + number + "')..."); if (VDBG) Log.v(TAG, "getGeoDescription('" + number + "')..."); if (TextUtils.isEmpty(number)) { return null; Loading @@ -702,18 +686,18 @@ public class CallerInfo { String countryIso = getCurrentCountryIso(context, locale); PhoneNumber pn = null; try { if (VDBG) Rlog.v(TAG, "parsing '" + number if (VDBG) Log.v(TAG, "parsing '" + number + "' for countryIso '" + countryIso + "'..."); pn = util.parse(number, countryIso); if (VDBG) Rlog.v(TAG, "- parsed number: " + pn); if (VDBG) Log.v(TAG, "- parsed number: " + pn); } catch (NumberParseException e) { Rlog.w(TAG, "getGeoDescription: NumberParseException for incoming number '" + Rlog.pii(TAG, number) + "'"); Log.w(TAG, "getGeoDescription: NumberParseException for incoming number '" + Log.pii(number) + "'"); } if (pn != null) { String description = geocoder.getDescriptionForNumber(pn, locale); if (VDBG) Rlog.v(TAG, "- got description: '" + description + "'"); if (VDBG) Log.v(TAG, "- got description: '" + description + "'"); return description; } else { return null; Loading @@ -733,12 +717,12 @@ public class CallerInfo { if (country != null) { countryIso = country.getCountryIso(); } else { Rlog.e(TAG, "CountryDetector.detectCountry() returned null."); Log.e(TAG, new Exception(), "CountryDetector.detectCountry() returned null."); } } if (countryIso == null) { countryIso = locale.getCountry(); Rlog.w(TAG, "No CountryDetector; falling back to countryIso based on locale: " Log.w(TAG, "No CountryDetector; falling back to countryIso based on locale: " + countryIso); } return countryIso; Loading
telephony/java/android/telephony/CallerInfoAsyncQuery.java→telecomm/java/android/telecom/CallerInfoAsyncQuery.java +25 −23 Original line number Diff line number Diff line Loading @@ -14,7 +14,7 @@ * limitations under the License. */ package android.telephony; package android.telecom; import android.app.ActivityManager; import android.content.AsyncQueryHandler; Loading @@ -31,6 +31,8 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; import android.provider.ContactsContract.PhoneLookup; import android.telephony.PhoneNumberUtils; import android.telephony.SubscriptionManager; import android.text.TextUtils; import java.util.ArrayList; import java.util.List; Loading Loading @@ -100,12 +102,12 @@ public class CallerInfoAsyncQuery { */ static ContentResolver getCurrentProfileContentResolver(Context context) { if (DBG) Rlog.d(LOG_TAG, "Trying to get current content resolver..."); if (DBG) Log.d(LOG_TAG, "Trying to get current content resolver..."); final int currentUser = ActivityManager.getCurrentUser(); final int myUser = UserManager.get(context).getUserHandle(); if (DBG) Rlog.d(LOG_TAG, "myUser=" + myUser + "currentUser=" + currentUser); if (DBG) Log.d(LOG_TAG, "myUser=" + myUser + "currentUser=" + currentUser); if (myUser != currentUser) { final Context otherContext; Loading @@ -114,7 +116,7 @@ public class CallerInfoAsyncQuery { /* flags =*/ 0, UserHandle.of(currentUser)); return otherContext.getContentResolver(); } catch (NameNotFoundException e) { Rlog.e(LOG_TAG, "Can't find self package", e); Log.e(LOG_TAG, e, "Can't find self package"); // Fall back to the primary user. } } Loading Loading @@ -179,13 +181,13 @@ public class CallerInfoAsyncQuery { // However, if there is any code that this Handler calls (such as in // super.handleMessage) that DOES place unexpected messages on the // queue, then we need pass these messages on. Rlog.i(LOG_TAG, "Unexpected command (CookieWrapper is null): " + msg.what + Log.i(LOG_TAG, "Unexpected command (CookieWrapper is null): " + msg.what + " ignored by CallerInfoWorkerHandler, passing onto parent."); super.handleMessage(msg); } else { Rlog.d(LOG_TAG, "Processing event: " + cw.event + " token (arg1): " + msg.arg1 + Log.d(LOG_TAG, "Processing event: " + cw.event + " token (arg1): " + msg.arg1 + " command: " + msg.what + " query URI: " + sanitizeUriToString(args.uri)); switch (cw.event) { Loading Loading @@ -226,7 +228,7 @@ public class CallerInfoAsyncQuery { cw.geoDescription = CallerInfo.getGeoDescription(mContext, cw.number); final long duration = SystemClock.elapsedRealtime() - startTimeMillis; if (duration > 500) { if (DBG) Rlog.d(LOG_TAG, "[handleGeoDescription]" + if (DBG) Log.d(LOG_TAG, "[handleGeoDescription]" + "Spends long time to retrieve Geo description: " + duration); } } Loading Loading @@ -263,7 +265,7 @@ public class CallerInfoAsyncQuery { */ @Override protected void onQueryComplete(int token, Object cookie, Cursor cursor) { Rlog.d(LOG_TAG, "##### onQueryComplete() ##### query complete for token: " + token); Log.d(LOG_TAG, "##### onQueryComplete() ##### query complete for token: " + token); //get the cookie and notify the listener. CookieWrapper cw = (CookieWrapper) cookie; Loading @@ -272,7 +274,7 @@ public class CallerInfoAsyncQuery { // from within this code. // However, if there is any code that calls this method, we should // check the parameters to make sure they're viable. Rlog.i(LOG_TAG, "Cookie is null, ignoring onQueryComplete() request."); Log.i(LOG_TAG, "Cookie is null, ignoring onQueryComplete() request."); if (cursor != null) { cursor.close(); } Loading Loading @@ -321,16 +323,16 @@ public class CallerInfoAsyncQuery { // comments at the top of CallerInfo class). mCallerInfo = new CallerInfo().markAsEmergency(mContext); } else if (cw.event == EVENT_VOICEMAIL_NUMBER) { mCallerInfo = new CallerInfo().markAsVoiceMail(cw.subId); mCallerInfo = new CallerInfo().markAsVoiceMail(mContext, cw.subId); } else { mCallerInfo = CallerInfo.getCallerInfo(mContext, mQueryUri, cursor); if (DBG) Rlog.d(LOG_TAG, "==> Got mCallerInfo: " + mCallerInfo); if (DBG) Log.d(LOG_TAG, "==> Got mCallerInfo: " + mCallerInfo); CallerInfo newCallerInfo = CallerInfo.doSecondaryLookupIfNecessary( mContext, cw.number, mCallerInfo); if (newCallerInfo != mCallerInfo) { mCallerInfo = newCallerInfo; if (DBG) Rlog.d(LOG_TAG, "#####async contact look up with numeric username" if (DBG) Log.d(LOG_TAG, "#####async contact look up with numeric username" + mCallerInfo); } Loading @@ -346,7 +348,7 @@ public class CallerInfoAsyncQuery { // the geo description, so it would be unnecessary to query it. if (ENABLE_UNKNOWN_NUMBER_GEO_DESCRIPTION) { if (TextUtils.isEmpty(mCallerInfo.getName())) { if (DBG) Rlog.d(LOG_TAG, "start querying geo description"); if (DBG) Log.d(LOG_TAG, "start querying geo description"); cw.event = EVENT_GET_GEO_DESCRIPTION; startQuery(token, cw, null, null, null, null, null); return; Loading @@ -354,7 +356,7 @@ public class CallerInfoAsyncQuery { } } if (DBG) Rlog.d(LOG_TAG, "constructing CallerInfo object for token: " + token); if (DBG) Log.d(LOG_TAG, "constructing CallerInfo object for token: " + token); //notify that we can clean up the queue after this. CookieWrapper endMarker = new CookieWrapper(); Loading @@ -367,14 +369,14 @@ public class CallerInfoAsyncQuery { mPendingListenerCallbacks.add(new Runnable() { @Override public void run() { if (DBG) Rlog.d(LOG_TAG, "notifying listener: " if (DBG) Log.d(LOG_TAG, "notifying listener: " + cw.listener.getClass().toString() + " for token: " + token + mCallerInfo); cw.listener.onQueryComplete(token, cw.cookie, mCallerInfo); } }); } else { Rlog.w(LOG_TAG, "There is no listener to notify for this query."); Log.w(LOG_TAG, "There is no listener to notify for this query."); } if (cursor != null) { Loading @@ -399,7 +401,7 @@ public class CallerInfoAsyncQuery { CallerInfoAsyncQuery c = new CallerInfoAsyncQuery(); c.allocate(context, contactRef); if (DBG) Rlog.d(LOG_TAG, "starting query for URI: " + contactRef + " handler: " + c.toString()); if (DBG) Log.d(LOG_TAG, "starting query for URI: " + contactRef + " handler: " + c.toString()); //create cookieWrapper, start query CookieWrapper cw = new CookieWrapper(); Loading Loading @@ -445,9 +447,9 @@ public class CallerInfoAsyncQuery { OnQueryCompleteListener listener, Object cookie, int subId) { if (DBG) { Rlog.d(LOG_TAG, "##### CallerInfoAsyncQuery startQuery()... #####"); Rlog.d(LOG_TAG, "- number: " + /*number*/ "xxxxxxx"); Rlog.d(LOG_TAG, "- cookie: " + cookie); Log.d(LOG_TAG, "##### CallerInfoAsyncQuery startQuery()... #####"); Log.d(LOG_TAG, "- number: " + /*number*/ "xxxxxxx"); Log.d(LOG_TAG, "- cookie: " + cookie); } // Construct the URI object and query params, and start the query. Loading @@ -459,7 +461,7 @@ public class CallerInfoAsyncQuery { .build(); if (DBG) { Rlog.d(LOG_TAG, "==> contactRef: " + sanitizeUriToString(contactRef)); Log.d(LOG_TAG, "==> contactRef: " + sanitizeUriToString(contactRef)); } CallerInfoAsyncQuery c = new CallerInfoAsyncQuery(); Loading Loading @@ -496,8 +498,8 @@ public class CallerInfoAsyncQuery { */ public void addQueryListener(int token, OnQueryCompleteListener listener, Object cookie) { if (DBG) Rlog.d(LOG_TAG, "adding listener to query: " + sanitizeUriToString(mHandler.mQueryUri) + " handler: " + mHandler.toString()); if (DBG) Log.d(LOG_TAG, "adding listener to query: " + sanitizeUriToString(mHandler.mQueryUri) + " handler: " + mHandler.toString()); //create cookieWrapper, add query request to end of queue. CookieWrapper cw = new CookieWrapper(); Loading