summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/current.txt1
-rw-r--r--telecomm/java/android/telecom/Call.java29
-rw-r--r--telecomm/java/android/telecom/ParcelableCall.java26
3 files changed, 49 insertions, 7 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index b4116cf69959..1660880673c0 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -40523,6 +40523,7 @@ package android.telecom {
method public int getCallerNumberVerificationStatus();
method public final long getConnectTimeMillis();
method @Nullable public String getContactDisplayName();
+ method @Nullable public android.net.Uri getContactPhotoUri();
method public long getCreationTimeMillis();
method public android.telecom.DisconnectCause getDisconnectCause();
method public android.os.Bundle getExtras();
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index 5cef2cb0a161..bbdc8907275e 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -738,6 +738,7 @@ public final class Call {
private final String mContactDisplayName;
private final @CallDirection int mCallDirection;
private final @Connection.VerificationStatus int mCallerNumberVerificationStatus;
+ private final Uri mContactPhotoUri;
/**
* Whether the supplied capabilities supports the specified capability.
@@ -945,6 +946,17 @@ public final class Call {
}
/**
+ * @return The contact photo URI which corresponds to
+ * {@link android.provider.ContactsContract.PhoneLookup#PHOTO_URI}, or {@code null} if the
+ * lookup is not yet complete, if there's no contacts entry for the caller,
+ * or if the {@link InCallService} does not hold the
+ * {@link android.Manifest.permission#READ_CONTACTS} permission.
+ */
+ public @Nullable Uri getContactPhotoUri() {
+ return mContactPhotoUri;
+ }
+
+ /**
* The display name for the caller.
* <p>
* This is the name as reported by the {@link ConnectionService} associated with this call.
@@ -1143,7 +1155,8 @@ public final class Call {
Objects.equals(mContactDisplayName, d.mContactDisplayName) &&
Objects.equals(mCallDirection, d.mCallDirection) &&
Objects.equals(mCallerNumberVerificationStatus,
- d.mCallerNumberVerificationStatus);
+ d.mCallerNumberVerificationStatus) &&
+ Objects.equals(mContactPhotoUri, d.mContactPhotoUri);
}
return false;
}
@@ -1168,7 +1181,8 @@ public final class Call {
mCreationTimeMillis,
mContactDisplayName,
mCallDirection,
- mCallerNumberVerificationStatus);
+ mCallerNumberVerificationStatus,
+ mContactPhotoUri);
}
/** {@hide} */
@@ -1192,7 +1206,8 @@ public final class Call {
long creationTimeMillis,
String contactDisplayName,
int callDirection,
- int callerNumberVerificationStatus) {
+ int callerNumberVerificationStatus,
+ Uri contactPhotoUri) {
mState = state;
mTelecomCallId = telecomCallId;
mHandle = handle;
@@ -1213,6 +1228,7 @@ public final class Call {
mContactDisplayName = contactDisplayName;
mCallDirection = callDirection;
mCallerNumberVerificationStatus = callerNumberVerificationStatus;
+ mContactPhotoUri = contactPhotoUri;
}
/** {@hide} */
@@ -1237,7 +1253,9 @@ public final class Call {
parcelableCall.getCreationTimeMillis(),
parcelableCall.getContactDisplayName(),
parcelableCall.getCallDirection(),
- parcelableCall.getCallerNumberVerificationStatus());
+ parcelableCall.getCallerNumberVerificationStatus(),
+ parcelableCall.getContactPhotoUri()
+ );
}
@Override
@@ -2644,7 +2662,8 @@ public final class Call {
mDetails.getCreationTimeMillis(),
mDetails.getContactDisplayName(),
mDetails.getCallDirection(),
- mDetails.getCallerNumberVerificationStatus()
+ mDetails.getCallerNumberVerificationStatus(),
+ mDetails.getContactPhotoUri()
);
fireDetailsChanged(mDetails);
}
diff --git a/telecomm/java/android/telecom/ParcelableCall.java b/telecomm/java/android/telecom/ParcelableCall.java
index f412a1825e2a..6a1318982e77 100644
--- a/telecomm/java/android/telecom/ParcelableCall.java
+++ b/telecomm/java/android/telecom/ParcelableCall.java
@@ -69,6 +69,7 @@ public final class ParcelableCall implements Parcelable {
private int mCallerNumberVerificationStatus;
private String mContactDisplayName;
private String mActiveChildCallId;
+ private Uri mContactPhotoUri;
public ParcelableCallBuilder setId(String id) {
mId = id;
@@ -224,6 +225,11 @@ public final class ParcelableCall implements Parcelable {
return this;
}
+ public ParcelableCallBuilder setContactPhotoUri(Uri contactPhotoUri) {
+ mContactPhotoUri = contactPhotoUri;
+ return this;
+ }
+
public ParcelableCall createParcelableCall() {
return new ParcelableCall(
mId,
@@ -255,7 +261,8 @@ public final class ParcelableCall implements Parcelable {
mCallDirection,
mCallerNumberVerificationStatus,
mContactDisplayName,
- mActiveChildCallId);
+ mActiveChildCallId,
+ mContactPhotoUri);
}
public static ParcelableCallBuilder fromParcelableCall(ParcelableCall parcelableCall) {
@@ -292,6 +299,7 @@ public final class ParcelableCall implements Parcelable {
parcelableCall.mCallerNumberVerificationStatus;
newBuilder.mContactDisplayName = parcelableCall.mContactDisplayName;
newBuilder.mActiveChildCallId = parcelableCall.mActiveChildCallId;
+ newBuilder.mContactPhotoUri = parcelableCall.mContactPhotoUri;
return newBuilder;
}
}
@@ -327,6 +335,7 @@ public final class ParcelableCall implements Parcelable {
private final int mCallerNumberVerificationStatus;
private final String mContactDisplayName;
private final String mActiveChildCallId; // Only valid for CDMA conferences
+ private final Uri mContactPhotoUri;
public ParcelableCall(
String id,
@@ -358,7 +367,8 @@ public final class ParcelableCall implements Parcelable {
int callDirection,
int callerNumberVerificationStatus,
String contactDisplayName,
- String activeChildCallId
+ String activeChildCallId,
+ Uri contactPhotoUri
) {
mId = id;
mState = state;
@@ -390,6 +400,7 @@ public final class ParcelableCall implements Parcelable {
mCallerNumberVerificationStatus = callerNumberVerificationStatus;
mContactDisplayName = contactDisplayName;
mActiveChildCallId = activeChildCallId;
+ mContactPhotoUri = contactPhotoUri;
}
/** The unique ID of the call. */
@@ -607,6 +618,14 @@ public final class ParcelableCall implements Parcelable {
}
/**
+ * @return the caller photo URI.
+ */
+ public @Nullable Uri getContactPhotoUri() {
+ return mContactPhotoUri;
+ }
+
+
+ /**
* @return On a CDMA conference with two participants, returns the ID of the child call that's
* currently active.
*/
@@ -655,6 +674,7 @@ public final class ParcelableCall implements Parcelable {
int callerNumberVerificationStatus = source.readInt();
String contactDisplayName = source.readString();
String activeChildCallId = source.readString();
+ Uri contactPhotoUri = source.readParcelable(classLoader, Uri.class);
return new ParcelableCallBuilder()
.setId(id)
.setState(state)
@@ -686,6 +706,7 @@ public final class ParcelableCall implements Parcelable {
.setCallerNumberVerificationStatus(callerNumberVerificationStatus)
.setContactDisplayName(contactDisplayName)
.setActiveChildCallId(activeChildCallId)
+ .setContactPhotoUri(contactPhotoUri)
.createParcelableCall();
}
@@ -735,6 +756,7 @@ public final class ParcelableCall implements Parcelable {
destination.writeInt(mCallerNumberVerificationStatus);
destination.writeString(mContactDisplayName);
destination.writeString(mActiveChildCallId);
+ destination.writeParcelable(mContactPhotoUri, 0);
}
@Override