Added optional uses-feature telephony to enable tablet installs (2/3)

* Check for the telephony feature before asking for the permission.
* Also, stop asking for all permission, both required and desired,
  when a required permission is missing. Now that this behavior is
  gone we can also stop requiring RequestPermissionsActivityBase
  instances to provide two differnt sets of permissions.

Bug 29874465
Bug 30000144

Change-Id: I44590e667f89eb217cc42cbb4ee186f3213509fa
diff --git a/src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java b/src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java
index df83129..999c545 100644
--- a/src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java
+++ b/src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java
@@ -16,7 +16,6 @@
 
 package com.android.contacts.common.activity;
 
-import com.android.contacts.common.R;
 import com.android.contacts.common.model.AccountTypeManager;
 import com.android.contacts.common.util.PermissionsUtil;
 
@@ -32,8 +31,7 @@
 import java.util.Arrays;
 
 /**
- * Activity that asks the user for all {@link #getDesiredPermissions} if any of
- * {@link #getRequiredPermissions} are missing.
+ * Activity that asks the user for all {@link #getPermissions} if any are missing.
  *
  * NOTE: As a result of b/22095159, this can behave oddly in the case where the final permission
  * you are requesting causes an application restart.
@@ -50,16 +48,10 @@
     private static final int PERMISSIONS_REQUEST_ALL_PERMISSIONS = 1;
 
     /**
-     * @return list of permissions that are needed in order for {@link #PREVIOUS_ACTIVITY_INTENT} to
-     * operate. You only need to return a single permission per permission group you care about.
+     * @return list of permissions that are needed in order for {@link #PREVIOUS_ACTIVITY_INTENT}
+     * to operate. You only need to return a single permission per permission group you care about.
      */
-    protected abstract String[] getRequiredPermissions();
-
-    /**
-     * @return list of permissions that would be useful for {@link #PREVIOUS_ACTIVITY_INTENT} to
-     * operate. You only need to return a single permission per permission group you care about.
-     */
-    protected abstract String[] getDesiredPermissions();
+    protected abstract String[] getPermissions();
 
     protected Intent mPreviousActivityIntent;
 
@@ -113,7 +105,7 @@
     }
 
     private boolean isPermissionRequired(String p) {
-        return Arrays.asList(getRequiredPermissions()).contains(p);
+        return Arrays.asList(getPermissions()).contains(p);
     }
 
     private void requestPermissions() {
@@ -121,7 +113,7 @@
         try {
             // Construct a list of missing permissions
             final ArrayList<String> unsatisfiedPermissions = new ArrayList<>();
-            for (String permission : getDesiredPermissions()) {
+            for (String permission : getPermissions()) {
                 if (!PermissionsUtil.hasPermission(this, permission)) {
                     unsatisfiedPermissions.add(permission);
                 }