diff --git a/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java b/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
index a09f6e1..0e78d70 100644
--- a/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
+++ b/java/com/android/dialer/historyitemactions/HistoryItemActionModulesBuilder.java
@@ -32,6 +32,7 @@
 import com.android.dialer.logging.ReportingLocation;
 import com.android.dialer.spam.Spam;
 import com.android.dialer.util.CallUtil;
+import com.android.dialer.util.PermissionsUtil;
 import com.android.dialer.util.UriUtils;
 import java.util.ArrayList;
 import java.util.List;
@@ -179,6 +180,7 @@
    * <p>The method is a no-op if
    *
    * <ul>
+   *   <li>the permission to send SMS is not granted,
    *   <li>the call is one made to/received from an emergency number,
    *   <li>the call is one made to a voicemail box,
    *   <li>the number is blocked, or
@@ -188,7 +190,8 @@
   public HistoryItemActionModulesBuilder addModuleForSendingTextMessage() {
     // TODO(zachh): There are other conditions where this module should not be shown
     // (e.g., business numbers).
-    if (moduleInfo.getIsEmergencyNumber()
+    if (!PermissionsUtil.hasSendSmsPermissions(context)
+        || moduleInfo.getIsEmergencyNumber()
         || moduleInfo.getIsVoicemailCall()
         || moduleInfo.getIsBlocked()
         || TextUtils.isEmpty(moduleInfo.getNormalizedNumber())) {
@@ -220,6 +223,7 @@
    * <p>The method is a no-op if
    *
    * <ul>
+   *   <li>the permission to write contacts is not granted,
    *   <li>the call is one made to/received from an emergency number,
    *   <li>the call is one made to a voicemail box,
    *   <li>the call should be shown as spam,
@@ -229,7 +233,8 @@
    * </ul>
    */
   public HistoryItemActionModulesBuilder addModuleForAddingToContacts() {
-    if (moduleInfo.getIsEmergencyNumber()
+    if (!PermissionsUtil.hasContactsWritePermissions(context)
+        || moduleInfo.getIsEmergencyNumber()
         || moduleInfo.getIsVoicemailCall()
         || Spam.shouldShowAsSpam(moduleInfo.getIsSpam(), moduleInfo.getCallType())
         || moduleInfo.getIsBlocked()
diff --git a/java/com/android/dialer/util/PermissionsUtil.java b/java/com/android/dialer/util/PermissionsUtil.java
index 09c2b7f..7e8aae9 100644
--- a/java/com/android/dialer/util/PermissionsUtil.java
+++ b/java/com/android/dialer/util/PermissionsUtil.java
@@ -91,6 +91,10 @@
     return hasPermission(context, permission.READ_CONTACTS);
   }
 
+  public static boolean hasContactsWritePermissions(Context context) {
+    return hasPermission(context, permission.WRITE_CONTACTS);
+  }
+
   public static boolean hasLocationPermissions(Context context) {
     return hasPermission(context, permission.ACCESS_FINE_LOCATION);
   }
@@ -127,6 +131,10 @@
     return hasPermission(context, permission.ADD_VOICEMAIL);
   }
 
+  public static boolean hasSendSmsPermissions(Context context) {
+    return hasPermission(context, permission.SEND_SMS);
+  }
+
   public static boolean hasPermission(Context context, String permission) {
     return ContextCompat.checkSelfPermission(context, permission)
         == PackageManager.PERMISSION_GRANTED;
