summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/postcall/PostCall.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/postcall/PostCall.java')
-rw-r--r--java/com/android/dialer/postcall/PostCall.java38
1 files changed, 34 insertions, 4 deletions
diff --git a/java/com/android/dialer/postcall/PostCall.java b/java/com/android/dialer/postcall/PostCall.java
index e27a9b582..edc07baf5 100644
--- a/java/com/android/dialer/postcall/PostCall.java
+++ b/java/com/android/dialer/postcall/PostCall.java
@@ -21,8 +21,10 @@ import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
+import android.support.annotation.Nullable;
import android.support.design.widget.BaseTransientBottomBar.BaseCallback;
import android.support.design.widget.Snackbar;
+import android.telephony.TelephonyManager;
import android.view.View;
import android.view.View.OnClickListener;
import com.android.dialer.buildtype.BuildType;
@@ -30,6 +32,9 @@ import com.android.dialer.common.Assert;
import com.android.dialer.common.ConfigProvider;
import com.android.dialer.common.ConfigProviderBindings;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
+import com.android.dialer.enrichedcall.EnrichedCallComponent;
+import com.android.dialer.enrichedcall.EnrichedCallManager;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.util.DialerUtils;
@@ -65,19 +70,33 @@ public class PostCall {
private static void promptUserToSendMessage(Activity activity, View rootView) {
LogUtil.i("PostCall.promptUserToSendMessage", "returned from call, showing post call SnackBar");
String message = activity.getString(R.string.post_call_message);
- String addMessage = activity.getString(R.string.post_call_add_message);
+ EnrichedCallManager manager = EnrichedCallComponent.get(activity).getEnrichedCallManager();
+ EnrichedCallCapabilities capabilities = manager.getCapabilities(getPhoneNumber(activity));
+ LogUtil.i(
+ "PostCall.promptUserToSendMessage",
+ "number: %s, capabilities: %s",
+ LogUtil.sanitizePhoneNumber(getPhoneNumber(activity)),
+ capabilities);
+
+ boolean isRcsPostCall = capabilities != null && capabilities.supportsPostCall();
+ String actionText =
+ isRcsPostCall
+ ? activity.getString(R.string.post_call_add_message)
+ : activity.getString(R.string.post_call_send_message);
+
OnClickListener onClickListener =
v -> {
Logger.get(activity)
.logImpression(DialerImpression.Type.POST_CALL_PROMPT_USER_TO_SEND_MESSAGE_CLICKED);
- activity.startActivity(PostCallActivity.newIntent(activity, getPhoneNumber(activity)));
+ activity.startActivity(
+ PostCallActivity.newIntent(activity, getPhoneNumber(activity), isRcsPostCall));
};
int durationMs =
(int) ConfigProviderBindings.get(activity).getLong("post_call_prompt_duration_ms", 8_000);
activeSnackbar =
Snackbar.make(rootView, message, durationMs)
- .setAction(addMessage, onClickListener)
+ .setAction(actionText, onClickListener)
.setActionTextColor(
activity.getResources().getColor(R.color.dialer_snackbar_action_text_color));
activeSnackbar.show();
@@ -143,6 +162,8 @@ public class PostCall {
}
private static void clear(Context context) {
+ activeSnackbar = null;
+
PreferenceManager.getDefaultSharedPreferences(context)
.edit()
.remove(KEY_POST_CALL_CALL_DISCONNECT_TIME)
@@ -163,8 +184,11 @@ public class PostCall {
ConfigProvider binding = ConfigProviderBindings.get(context);
return disconnectTimeMillis != -1
&& connectTimeMillis != -1
+ && isSimReady(context)
&& binding.getLong("postcall_last_call_threshold", 30_000) > timeSinceDisconnect
- && binding.getLong("postcall_call_duration_threshold", 35_000) > callDurationMillis;
+ && (connectTimeMillis == 0
+ || binding.getLong("postcall_call_duration_threshold", 35_000) > callDurationMillis)
+ && getPhoneNumber(context) != null;
}
private static boolean shouldPromptUserToViewSentMessage(Context context) {
@@ -172,6 +196,7 @@ public class PostCall {
.getBoolean(KEY_POST_CALL_MESSAGE_SENT, false);
}
+ @Nullable
private static String getPhoneNumber(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context)
.getString(KEY_POST_CALL_CALL_NUMBER, null);
@@ -192,4 +217,9 @@ public class PostCall {
return false;
}
}
+
+ private static boolean isSimReady(Context context) {
+ return context.getSystemService(TelephonyManager.class).getSimState()
+ == TelephonyManager.SIM_STATE_READY;
+ }
}