Loading src/com/android/contacts/common/activity/RequestDesiredPermissionsActivity.java +24 −14 Original line number Diff line number Diff line Loading @@ -19,8 +19,12 @@ package com.android.contacts.common.activity; import android.Manifest.permission; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import java.util.ArrayList; import java.util.List; /** * Requests permissions that are not absolutely required by the calling Activity; * if permissions are denied, the calling Activity is still restarted. Loading @@ -32,21 +36,11 @@ import android.os.Bundle; */ public class RequestDesiredPermissionsActivity extends RequestPermissionsActivityBase { public static final String[] DESIRED_PERMISSIONS = new String[] { // Calendar group permission.READ_CALENDAR, // SMS group permission.READ_SMS, }; private static String[] sDesiredPermissions; @Override protected String[] getRequiredPermissions() { return DESIRED_PERMISSIONS; } @Override protected String[] getDesiredPermissions() { return DESIRED_PERMISSIONS; protected String[] getPermissions() { return getPermissions(getPackageManager()); } /** Loading @@ -61,10 +55,26 @@ public class RequestDesiredPermissionsActivity extends RequestPermissionsActivit if (extras != null && extras.getBoolean(EXTRA_STARTED_PERMISSIONS_ACTIVITY, false)) { return false; } return startPermissionActivity(activity, DESIRED_PERMISSIONS, return startPermissionActivity(activity, getPermissions(activity.getPackageManager()), RequestDesiredPermissionsActivity.class); } private static String[] getPermissions(PackageManager packageManager) { if (sDesiredPermissions == null) { final List<String> permissions = new ArrayList<>(); // Calendar group permissions.add(permission.READ_CALENDAR); if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { // SMS group permissions.add(permission.READ_SMS); } sDesiredPermissions = permissions.toArray(new String[0]); } return sDesiredPermissions; } @Override public void onRequestPermissionsResult( int requestCode, String permissions[], int[] grantResults) { Loading src/com/android/contacts/common/activity/RequestImportVCardPermissionsActivity.java +1 −8 Original line number Diff line number Diff line Loading @@ -34,14 +34,7 @@ public class RequestImportVCardPermissionsActivity extends RequestPermissionsAct }; @Override protected String[] getRequiredPermissions() { return REQUIRED_PERMISSIONS; } @Override protected String[] getDesiredPermissions() { // Since this is used as an ostensible part of Dialer, lets be less pushy about asking for // unnecessary permissions here. protected String[] getPermissions() { return REQUIRED_PERMISSIONS; } Loading src/com/android/contacts/common/activity/RequestPermissionsActivity.java +31 −33 Original line number Diff line number Diff line Loading @@ -21,52 +21,50 @@ import com.android.contacts.common.R; import android.Manifest.permission; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.widget.Toast; import java.util.ArrayList; import java.util.List; /** * Activity that requests permissions needed for activities exported from Contacts. */ public class RequestPermissionsActivity extends RequestPermissionsActivityBase { private static final String[] REQUIRED_PERMISSIONS = new String[]{ // "Contacts" group. Without this permission, the Contacts app is useless. permission.GET_ACCOUNTS, permission.READ_CONTACTS, permission.WRITE_CONTACTS, // "Phone" group. This is only used in a few places such as QuickContactActivity and // ImportExportDialogFragment. We could work around missing this permission with a bit // of work. permission.CALL_PHONE, permission.READ_CALL_LOG, permission.READ_PHONE_STATE, }; private static String[] sRequiredPermissions; @Override protected String[] getRequiredPermissions() { return REQUIRED_PERMISSIONS; protected String[] getPermissions() { return getPermissions(getPackageManager()); } @Override protected String[] getDesiredPermissions() { return new String[]{ public static boolean startPermissionActivity(Activity activity) { return startPermissionActivity(activity, getPermissions(activity.getPackageManager()), RequestPermissionsActivity.class); } private static String[] getPermissions(PackageManager packageManager) { if (sRequiredPermissions == null) { final List<String> permissions = new ArrayList<>(); // Contacts group permission.GET_ACCOUNTS, permission.READ_CONTACTS, permission.WRITE_CONTACTS, permissions.add(permission.GET_ACCOUNTS); permissions.add(permission.READ_CONTACTS); permissions.add(permission.WRITE_CONTACTS); if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { // Phone group permission.CALL_PHONE, permission.READ_CALL_LOG, permission.READ_PHONE_STATE, // Calendar group permission.READ_CALENDAR, // SMS group permission.READ_SMS, }; // These are only used in a few places such as QuickContactActivity and // ImportExportDialogFragment. We work around missing this permission when // telephony is not available on the device (i.e. on tablets). permissions.add(permission.CALL_PHONE); permissions.add(permission.READ_CALL_LOG); permissions.add(permission.READ_PHONE_STATE); } public static boolean startPermissionActivity(Activity activity) { return startPermissionActivity(activity, REQUIRED_PERMISSIONS, RequestPermissionsActivity.class); sRequiredPermissions = permissions.toArray(new String[0]); } return sRequiredPermissions; } @Override Loading src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java +6 −14 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -32,8 +31,7 @@ import java.util.ArrayList; 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. Loading @@ -50,16 +48,10 @@ public abstract class RequestPermissionsActivityBase extends Activity 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; Loading Loading @@ -113,7 +105,7 @@ public abstract class RequestPermissionsActivityBase extends Activity } private boolean isPermissionRequired(String p) { return Arrays.asList(getRequiredPermissions()).contains(p); return Arrays.asList(getPermissions()).contains(p); } private void requestPermissions() { Loading @@ -121,7 +113,7 @@ public abstract class RequestPermissionsActivityBase extends Activity 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); } Loading Loading
src/com/android/contacts/common/activity/RequestDesiredPermissionsActivity.java +24 −14 Original line number Diff line number Diff line Loading @@ -19,8 +19,12 @@ package com.android.contacts.common.activity; import android.Manifest.permission; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import java.util.ArrayList; import java.util.List; /** * Requests permissions that are not absolutely required by the calling Activity; * if permissions are denied, the calling Activity is still restarted. Loading @@ -32,21 +36,11 @@ import android.os.Bundle; */ public class RequestDesiredPermissionsActivity extends RequestPermissionsActivityBase { public static final String[] DESIRED_PERMISSIONS = new String[] { // Calendar group permission.READ_CALENDAR, // SMS group permission.READ_SMS, }; private static String[] sDesiredPermissions; @Override protected String[] getRequiredPermissions() { return DESIRED_PERMISSIONS; } @Override protected String[] getDesiredPermissions() { return DESIRED_PERMISSIONS; protected String[] getPermissions() { return getPermissions(getPackageManager()); } /** Loading @@ -61,10 +55,26 @@ public class RequestDesiredPermissionsActivity extends RequestPermissionsActivit if (extras != null && extras.getBoolean(EXTRA_STARTED_PERMISSIONS_ACTIVITY, false)) { return false; } return startPermissionActivity(activity, DESIRED_PERMISSIONS, return startPermissionActivity(activity, getPermissions(activity.getPackageManager()), RequestDesiredPermissionsActivity.class); } private static String[] getPermissions(PackageManager packageManager) { if (sDesiredPermissions == null) { final List<String> permissions = new ArrayList<>(); // Calendar group permissions.add(permission.READ_CALENDAR); if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { // SMS group permissions.add(permission.READ_SMS); } sDesiredPermissions = permissions.toArray(new String[0]); } return sDesiredPermissions; } @Override public void onRequestPermissionsResult( int requestCode, String permissions[], int[] grantResults) { Loading
src/com/android/contacts/common/activity/RequestImportVCardPermissionsActivity.java +1 −8 Original line number Diff line number Diff line Loading @@ -34,14 +34,7 @@ public class RequestImportVCardPermissionsActivity extends RequestPermissionsAct }; @Override protected String[] getRequiredPermissions() { return REQUIRED_PERMISSIONS; } @Override protected String[] getDesiredPermissions() { // Since this is used as an ostensible part of Dialer, lets be less pushy about asking for // unnecessary permissions here. protected String[] getPermissions() { return REQUIRED_PERMISSIONS; } Loading
src/com/android/contacts/common/activity/RequestPermissionsActivity.java +31 −33 Original line number Diff line number Diff line Loading @@ -21,52 +21,50 @@ import com.android.contacts.common.R; import android.Manifest.permission; import android.app.Activity; import android.content.Intent; import android.content.pm.PackageManager; import android.widget.Toast; import java.util.ArrayList; import java.util.List; /** * Activity that requests permissions needed for activities exported from Contacts. */ public class RequestPermissionsActivity extends RequestPermissionsActivityBase { private static final String[] REQUIRED_PERMISSIONS = new String[]{ // "Contacts" group. Without this permission, the Contacts app is useless. permission.GET_ACCOUNTS, permission.READ_CONTACTS, permission.WRITE_CONTACTS, // "Phone" group. This is only used in a few places such as QuickContactActivity and // ImportExportDialogFragment. We could work around missing this permission with a bit // of work. permission.CALL_PHONE, permission.READ_CALL_LOG, permission.READ_PHONE_STATE, }; private static String[] sRequiredPermissions; @Override protected String[] getRequiredPermissions() { return REQUIRED_PERMISSIONS; protected String[] getPermissions() { return getPermissions(getPackageManager()); } @Override protected String[] getDesiredPermissions() { return new String[]{ public static boolean startPermissionActivity(Activity activity) { return startPermissionActivity(activity, getPermissions(activity.getPackageManager()), RequestPermissionsActivity.class); } private static String[] getPermissions(PackageManager packageManager) { if (sRequiredPermissions == null) { final List<String> permissions = new ArrayList<>(); // Contacts group permission.GET_ACCOUNTS, permission.READ_CONTACTS, permission.WRITE_CONTACTS, permissions.add(permission.GET_ACCOUNTS); permissions.add(permission.READ_CONTACTS); permissions.add(permission.WRITE_CONTACTS); if (packageManager.hasSystemFeature(PackageManager.FEATURE_TELEPHONY)) { // Phone group permission.CALL_PHONE, permission.READ_CALL_LOG, permission.READ_PHONE_STATE, // Calendar group permission.READ_CALENDAR, // SMS group permission.READ_SMS, }; // These are only used in a few places such as QuickContactActivity and // ImportExportDialogFragment. We work around missing this permission when // telephony is not available on the device (i.e. on tablets). permissions.add(permission.CALL_PHONE); permissions.add(permission.READ_CALL_LOG); permissions.add(permission.READ_PHONE_STATE); } public static boolean startPermissionActivity(Activity activity) { return startPermissionActivity(activity, REQUIRED_PERMISSIONS, RequestPermissionsActivity.class); sRequiredPermissions = permissions.toArray(new String[0]); } return sRequiredPermissions; } @Override Loading
src/com/android/contacts/common/activity/RequestPermissionsActivityBase.java +6 −14 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -32,8 +31,7 @@ import java.util.ArrayList; 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. Loading @@ -50,16 +48,10 @@ public abstract class RequestPermissionsActivityBase extends Activity 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; Loading Loading @@ -113,7 +105,7 @@ public abstract class RequestPermissionsActivityBase extends Activity } private boolean isPermissionRequired(String p) { return Arrays.asList(getRequiredPermissions()).contains(p); return Arrays.asList(getPermissions()).contains(p); } private void requestPermissions() { Loading @@ -121,7 +113,7 @@ public abstract class RequestPermissionsActivityBase extends Activity 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); } Loading