diff options
13 files changed, 28 insertions, 25 deletions
diff --git a/src/com/android/contacts/NonPhoneActivity.java b/src/com/android/contacts/NonPhoneActivity.java index 066c4d32a..ba56d7090 100644 --- a/src/com/android/contacts/NonPhoneActivity.java +++ b/src/com/android/contacts/NonPhoneActivity.java @@ -44,9 +44,7 @@ public class NonPhoneActivity extends ContactsActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (RequestPermissionsActivity.startPermissionActivity(this)) { - return; - } + RequestPermissionsActivity.startPermissionActivityIfNeeded(this); final String phoneNumber = getPhoneNumber(); if (TextUtils.isEmpty(phoneNumber)) { diff --git a/src/com/android/contacts/activities/AttachPhotoActivity.java b/src/com/android/contacts/activities/AttachPhotoActivity.java index 62e6ca4d7..bde3dc1c1 100644 --- a/src/com/android/contacts/activities/AttachPhotoActivity.java +++ b/src/com/android/contacts/activities/AttachPhotoActivity.java @@ -95,7 +95,7 @@ public class AttachPhotoActivity extends ContactsActivity { public void onCreate(Bundle icicle) { super.onCreate(icicle); - if (RequestPermissionsActivity.startPermissionActivity(this)) { + if (RequestPermissionsActivity.startPermissionActivityIfNeeded(this)) { return; } diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java index 24e48ef49..8f488e173 100644 --- a/src/com/android/contacts/activities/ContactEditorActivity.java +++ b/src/com/android/contacts/activities/ContactEditorActivity.java @@ -319,9 +319,7 @@ public class ContactEditorActivity extends AppCompatContactsActivity implements public void onCreate(Bundle savedState) { super.onCreate(savedState); - if (RequestPermissionsActivity.startPermissionActivity(this)) { - return; - } + RequestPermissionsActivity.startPermissionActivityIfNeeded(this); final Intent intent = getIntent(); final String action = intent.getAction(); diff --git a/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java b/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java index 5ad05dc05..cf2ce9cff 100644 --- a/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java +++ b/src/com/android/contacts/activities/ContactEditorSpringBoardActivity.java @@ -84,7 +84,7 @@ public class ContactEditorSpringBoardActivity extends AppCompatContactsActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (RequestPermissionsActivity.startPermissionActivity(this)) { + if (RequestPermissionsActivity.startPermissionActivityIfNeeded(this)) { return; } diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java index 654263b21..eaa89a1ea 100644 --- a/src/com/android/contacts/activities/ContactSelectionActivity.java +++ b/src/com/android/contacts/activities/ContactSelectionActivity.java @@ -107,9 +107,7 @@ public class ContactSelectionActivity extends AppCompatContactsActivity implemen protected void onCreate(Bundle savedState) { super.onCreate(savedState); - if (RequestPermissionsActivity.startPermissionActivity(this)) { - return; - } + RequestPermissionsActivity.startPermissionActivityIfNeeded(this); if (savedState != null) { mActionCode = savedState.getInt(KEY_ACTION_CODE); diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java index c0798bb78..e5ae3a312 100644 --- a/src/com/android/contacts/activities/PeopleActivity.java +++ b/src/com/android/contacts/activities/PeopleActivity.java @@ -349,9 +349,7 @@ public class PeopleActivity extends AppCompatContactsActivity implements mAccountTypeManager = AccountTypeManager.getInstance(this); mContactListFilterController = ContactListFilterController.getInstance(this); - if (RequestPermissionsActivity.startPermissionActivity(this)) { - return; - } + RequestPermissionsActivity.startPermissionActivityIfNeeded(this); if (!processIntent(false)) { finish(); diff --git a/src/com/android/contacts/activities/RequestPermissionsActivity.java b/src/com/android/contacts/activities/RequestPermissionsActivity.java index 02ddf34e1..bcfa12842 100644 --- a/src/com/android/contacts/activities/RequestPermissionsActivity.java +++ b/src/com/android/contacts/activities/RequestPermissionsActivity.java @@ -18,6 +18,7 @@ package com.android.contacts.activities; import android.Manifest.permission; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.support.v4.content.LocalBroadcastManager; @@ -42,7 +43,14 @@ public class RequestPermissionsActivity extends RequestPermissionsActivityBase { return getPermissions(getPackageManager()); } - public static boolean startPermissionActivity(Activity activity) { + /** + * Method to check if the required permissions are given. + */ + public static boolean hasRequiredPermissions(Context context) { + return hasPermissions(context, getPermissions(context.getPackageManager())); + } + + public static boolean startPermissionActivityIfNeeded(Activity activity) { return startPermissionActivity(activity, getPermissions(activity.getPackageManager()), RequestPermissionsActivity.class); diff --git a/src/com/android/contacts/activities/ShowOrCreateActivity.java b/src/com/android/contacts/activities/ShowOrCreateActivity.java index 91c93b99e..8c943640e 100755 --- a/src/com/android/contacts/activities/ShowOrCreateActivity.java +++ b/src/com/android/contacts/activities/ShowOrCreateActivity.java @@ -87,7 +87,7 @@ public final class ShowOrCreateActivity extends ContactsActivity protected void onCreate(Bundle icicle) { super.onCreate(icicle); - if (RequestPermissionsActivity.startPermissionActivity(this)) { + if (RequestPermissionsActivity.startPermissionActivityIfNeeded(this)) { return; } diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java index 84c2b1f7c..d5522dd4c 100644 --- a/src/com/android/contacts/editor/ContactEditorFragment.java +++ b/src/com/android/contacts/editor/ContactEditorFragment.java @@ -64,6 +64,7 @@ import com.android.contacts.activities.ContactEditorAccountsChangedActivity; import com.android.contacts.activities.ContactEditorActivity; import com.android.contacts.activities.ContactEditorActivity.ContactEditor; import com.android.contacts.activities.ContactSelectionActivity; +import com.android.contacts.activities.RequestPermissionsActivity; import com.android.contacts.editor.AggregationSuggestionEngine.Suggestion; import com.android.contacts.group.GroupUtil; import com.android.contacts.list.UiIntentActions; @@ -1310,7 +1311,8 @@ public class ContactEditorFragment extends Fragment implements } return false; } - return true; + // Don't attempt to bind anything if we have no permissions. + return RequestPermissionsActivity.hasRequiredPermissions(mContext); } /** diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java index 0c6e02972..320a19a8a 100644 --- a/src/com/android/contacts/editor/RawContactEditorView.java +++ b/src/com/android/contacts/editor/RawContactEditorView.java @@ -58,8 +58,6 @@ import com.android.contacts.model.RawContactDelta; import com.android.contacts.model.RawContactDeltaList; import com.android.contacts.model.RawContactModifier; import com.android.contacts.model.ValuesDelta; -import com.android.contacts.model.account.AccountDisplayInfo; -import com.android.contacts.model.account.AccountDisplayInfoFactory; import com.android.contacts.model.account.AccountInfo; import com.android.contacts.model.account.AccountType; import com.android.contacts.model.account.AccountWithDataSet; @@ -72,7 +70,6 @@ import com.android.contacts.util.UiClosables; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; @@ -380,7 +377,7 @@ public class RawContactEditorView extends LinearLayout implements View.OnClickLi * Get the raw contact ID for the current photo. */ public long getPhotoRawContactId() { - return mCurrentRawContactDelta.getRawContactId(); + return mCurrentRawContactDelta == null ? - 1 : mCurrentRawContactDelta.getRawContactId(); } public StructuredNameEditorView getNameEditorView() { @@ -464,6 +461,11 @@ public class RawContactEditorView extends LinearLayout implements View.OnClickLi return; } pickRawContactDelta(); + if (mCurrentRawContactDelta == null) { + elog("Couldn't pick a raw contact delta."); + if (mListener != null) mListener.onBindEditorsFailed(); + return; + } // Apply any intent extras now that we have selected a raw contact delta. applyIntentExtras(); parseRawContactDelta(); diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java index dc1cfcfef..2007e1068 100644 --- a/src/com/android/contacts/quickcontact/QuickContactActivity.java +++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java @@ -71,7 +71,6 @@ import android.provider.ContactsContract.DisplayNameSources; import android.provider.ContactsContract.Intents; import android.provider.ContactsContract.QuickContact; import android.provider.ContactsContract.RawContacts; -import android.support.graphics.drawable.VectorDrawableCompat; import android.support.v4.app.ActivityCompat; import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.res.ResourcesCompat; @@ -719,7 +718,7 @@ public class QuickContactActivity extends ContactsActivity { Trace.beginSection("onCreate()"); super.onCreate(savedInstanceState); - if (RequestPermissionsActivity.startPermissionActivity(this)) { + if (RequestPermissionsActivity.startPermissionActivityIfNeeded(this)) { return; } diff --git a/src/com/android/contacts/vcard/ExportVCardActivity.java b/src/com/android/contacts/vcard/ExportVCardActivity.java index 1f1e21bcd..690f2070c 100644 --- a/src/com/android/contacts/vcard/ExportVCardActivity.java +++ b/src/com/android/contacts/vcard/ExportVCardActivity.java @@ -76,7 +76,7 @@ public class ExportVCardActivity extends Activity implements ServiceConnection, protected void onCreate(Bundle bundle) { super.onCreate(bundle); - if (RequestImportVCardPermissionsActivity.startPermissionActivity(this)) { + if (RequestImportVCardPermissionsActivity.startPermissionActivityIfNeeded(this)) { return; } diff --git a/src/com/android/contacts/vcard/NfcImportVCardActivity.java b/src/com/android/contacts/vcard/NfcImportVCardActivity.java index 4eb9b577b..b8b76dacc 100644 --- a/src/com/android/contacts/vcard/NfcImportVCardActivity.java +++ b/src/com/android/contacts/vcard/NfcImportVCardActivity.java @@ -170,7 +170,7 @@ public class NfcImportVCardActivity extends Activity implements ServiceConnectio protected void onCreate(Bundle bundle) { super.onCreate(bundle); - if (RequestPermissionsActivity.startPermissionActivity(this)) { + if (RequestPermissionsActivity.startPermissionActivityIfNeeded(this)) { return; } |