Telecomm: Use Uri for handle
Change-Id: I7f3163da47159d68903ce45268429f5949203589
diff --git a/src/com/android/telecomm/Call.java b/src/com/android/telecomm/Call.java
index 0b60c4a..08a50ab 100644
--- a/src/com/android/telecomm/Call.java
+++ b/src/com/android/telecomm/Call.java
@@ -16,6 +16,7 @@
package com.android.telecomm;
+import android.net.Uri;
import android.telecomm.CallInfo;
import android.telecomm.CallState;
@@ -52,7 +53,7 @@
private CallState mState;
/** The handle with which to establish this call. */
- private String mHandle;
+ private Uri mHandle;
/**
* The call service which is attempted or already connecting this call.
@@ -87,7 +88,7 @@
* @param handle The handle to dial.
* @param contactInfo Information about the entity being called.
*/
- Call(String handle, ContactInfo contactInfo) {
+ Call(Uri handle, ContactInfo contactInfo) {
mId = UUID.randomUUID().toString(); // UUIDs should provide sufficient uniqueness.
mState = CallState.NEW;
mHandle = handle;
@@ -120,11 +121,11 @@
clearCallInfo();
}
- String getHandle() {
+ Uri getHandle() {
return mHandle;
}
- void setHandle(String handle) {
+ void setHandle(Uri handle) {
mHandle = handle;
}
diff --git a/src/com/android/telecomm/CallActivity.java b/src/com/android/telecomm/CallActivity.java
index 2418a0a..06d4267 100644
--- a/src/com/android/telecomm/CallActivity.java
+++ b/src/com/android/telecomm/CallActivity.java
@@ -89,17 +89,8 @@
* @param intent Call intent containing data about the handle to call.
*/
private void processOutgoingCallIntent(Intent intent) {
- // TODO(santoscordon): Remove the toast.
- String toastContent = "[" + intent.getAction() + "] " + intent.getDataString();
- Toast.makeText(this, toastContent, Toast.LENGTH_LONG).show();
-
- // TODO(gilad): Pull the scheme etc. from the data string as well as any relevant extras
- // from the intent into structured data and invoke the corresponding CallsManager APIs
- // based on that. May want to add a static utility to perform that in case the logic is
- // non-trivial/voluminous.
- String handle = intent.getDataString();
ContactInfo contactInfo = null;
- mCallsManager.processOutgoingCallIntent(handle, contactInfo);
+ mCallsManager.processOutgoingCallIntent(intent.getData(), contactInfo);
}
/**
diff --git a/src/com/android/telecomm/CallLogManager.java b/src/com/android/telecomm/CallLogManager.java
index de9b301..718c685 100644
--- a/src/com/android/telecomm/CallLogManager.java
+++ b/src/com/android/telecomm/CallLogManager.java
@@ -97,7 +97,7 @@
* {@link android.provider.CallLog.Calls#MISSED_TYPE}
*/
private void logCall(Call call, int callLogType) {
- String number = call.getHandle();
+ Uri number = call.getHandle();
final long creationTime = call.getCreationTimeInMilliseconds();
final long age = call.getAgeInMilliseconds();
@@ -160,16 +160,18 @@
* @return the phone number to be logged.
*/
private String getLogNumber(Call call) {
- String handle = call.getHandle();
+ Uri handle = call.getHandle();
if (handle == null) {
return null;
}
- if (!PhoneNumberUtils.isUriNumber(handle)) {
- handle = PhoneNumberUtils.stripSeparators(handle);
+ // TODO: Add support for SIP numbers.
+ String handleString = handle.toString();
+ if (!PhoneNumberUtils.isUriNumber(handleString)) {
+ handleString = PhoneNumberUtils.stripSeparators(handleString);
}
- return handle;
+ return handleString;
}
/**
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index 4b4de71..556c770 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
+import android.net.Uri;
import android.os.Bundle;
import android.telecomm.CallService;
import android.telecomm.CallServiceDescriptor;
@@ -130,7 +131,7 @@
Log.d(this, "handleSuccessfulIncomingCall");
Preconditions.checkState(call.getState() == CallState.RINGING);
- String handle = call.getHandle();
+ Uri handle = call.getHandle();
ContactInfo contactInfo = call.getContactInfo();
for (IncomingCallValidator validator : mIncomingCallValidators) {
if (!validator.isValid(handle, contactInfo)) {
@@ -160,7 +161,7 @@
* @param handle The handle to dial.
* @param contactInfo Information about the entity being called.
*/
- void processOutgoingCallIntent(String handle, ContactInfo contactInfo) {
+ void processOutgoingCallIntent(Uri handle, ContactInfo contactInfo) {
for (OutgoingCallValidator validator : mOutgoingCallValidators) {
if (!validator.isValid(handle, contactInfo)) {
// TODO(gilad): Display an error message.
diff --git a/src/com/android/telecomm/IncomingCallValidator.java b/src/com/android/telecomm/IncomingCallValidator.java
index 75ad10b..769eae7 100644
--- a/src/com/android/telecomm/IncomingCallValidator.java
+++ b/src/com/android/telecomm/IncomingCallValidator.java
@@ -16,6 +16,8 @@
package com.android.telecomm;
+import android.net.Uri;
+
/**
* Implementations can be used to reject incoming calls based on arbitrary restrictions across call
* services (e.g. suppressing calls from certain phone numbers regardless if they are received over
@@ -23,5 +25,5 @@
*/
public interface IncomingCallValidator {
- boolean isValid(String handle, ContactInfo contactInfo);
+ boolean isValid(Uri handle, ContactInfo contactInfo);
}
diff --git a/src/com/android/telecomm/OutgoingCallValidator.java b/src/com/android/telecomm/OutgoingCallValidator.java
index 0553b58..288d37e 100644
--- a/src/com/android/telecomm/OutgoingCallValidator.java
+++ b/src/com/android/telecomm/OutgoingCallValidator.java
@@ -16,6 +16,8 @@
package com.android.telecomm;
+import android.net.Uri;
+
/**
* Implementations can be used to suppress certain classes of outgoing calls based on arbitrary
* restrictions across call services (e.g. black-listing some phone numbers regardless if these
@@ -27,5 +29,5 @@
*/
public interface OutgoingCallValidator {
- boolean isValid(String handle, ContactInfo contactInfo);
+ boolean isValid(Uri handle, ContactInfo contactInfo);
}