Merge "Hide select contacts option for empty group" into ub-contactsdialer-h-dev
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 461fafe..20e0a65 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -16,8 +16,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.contacts"
- android:versionCode="10606"
- android:versionName="1.6.6">
+ android:versionCode="10607"
+ android:versionName="1.6.7">
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="25" />
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index 7c04626..768f18e 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -790,9 +790,7 @@
final FragmentManager fragmentManager = getFragmentManager();
final FragmentTransaction transaction = fragmentManager.beginTransaction();
if (isGroupView()) {
- if (mMembersFragment == null) {
- mMembersFragment = GroupMembersFragment.newInstance(mGroupUri);
- }
+ mMembersFragment = GroupMembersFragment.newInstance(mGroupUri);
transaction.replace(
R.id.contacts_list_container, mMembersFragment, TAG_GROUP_VIEW);
} else if(isAssistantView()) {
diff --git a/src/com/android/contacts/common/database/SimContactDao.java b/src/com/android/contacts/common/database/SimContactDao.java
index 5f22287..8d7855f 100644
--- a/src/com/android/contacts/common/database/SimContactDao.java
+++ b/src/com/android/contacts/common/database/SimContactDao.java
@@ -20,6 +20,7 @@
import android.content.ContentResolver;
import android.content.Context;
import android.content.OperationApplicationException;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
@@ -32,10 +33,12 @@
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.ArraySet;
+import android.util.Log;
import com.android.contacts.common.Experiments;
import com.android.contacts.common.model.SimContact;
import com.android.contacts.common.model.account.AccountWithDataSet;
+import com.android.contacts.common.util.PermissionsUtil;
import com.android.contacts.util.SharedPreferenceUtil;
import com.android.contactsbind.experiments.Flags;
import com.google.common.collect.Sets;
@@ -50,6 +53,8 @@
* SIM contacts to a CP2 account.
*/
public class SimContactDao {
+ private static final String TAG = "SimContactDao";
+
@VisibleForTesting
public static final Uri ICC_CONTENT_URI = Uri.parse("content://icc/adn");
@@ -88,9 +93,20 @@
}
public boolean shouldLoad() {
- final Set<String> simIds = getSimCardIds();
- return !Sets.difference(simIds, SharedPreferenceUtil.getImportedSims(mContext)).isEmpty()
- && getSimState() != TelephonyManager.SIM_STATE_ABSENT;
+ final Set<String> simIds = hasTelephony() && hasPermissions() ? getSimCardIds() :
+ Collections.<String>emptySet();
+
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "shouldLoad: hasTelephony? " + hasTelephony() +
+ " hasPermissions? " + hasPermissions() +
+ " SIM absent? " + (getSimState() != TelephonyManager.SIM_STATE_ABSENT) +
+ " SIM ids=" + simIds +
+ " imported=" + SharedPreferenceUtil.getImportedSims(mContext));
+ }
+ return hasTelephony() && hasPermissions() &&
+ getSimState() != TelephonyManager.SIM_STATE_ABSENT &&
+ !Sets.difference(simIds, SharedPreferenceUtil.getImportedSims(mContext))
+ .isEmpty();
}
public Set<String> getSimCardIds() {
@@ -190,4 +206,13 @@
SharedPreferenceUtil.addImportedSim(mContext, id);
}
}
+
+ private boolean hasTelephony() {
+ return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
+ }
+
+ private boolean hasPermissions() {
+ return PermissionsUtil.hasContactsPermissions(mContext) &&
+ PermissionsUtil.hasPhonePermissions(mContext);
+ }
}
diff --git a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
index 9152956..ec08a76 100644
--- a/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
+++ b/tests/src/com/android/contacts/interactions/ContactDeletionInteractionTest.java
@@ -107,33 +107,33 @@
}
public void testSingleWritableRawContact() {
- expectQuery().returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz");
+ expectQuery().returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz", "bazAlt");
assertWithMessageId(R.string.deleteConfirmation);
}
public void testReadOnlyRawContacts() {
- expectQuery().returnRow(1, READONLY_ACCOUNT_TYPE, null, 13, "foo", "baz");
+ expectQuery().returnRow(1, READONLY_ACCOUNT_TYPE, null, 13, "foo", "baz", "bazAlt");
assertWithMessageId(R.string.readOnlyContactWarning);
}
public void testMixOfWritableAndReadOnlyRawContacts() {
expectQuery()
- .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz")
- .returnRow(2, READONLY_ACCOUNT_TYPE, null, 13, "foo", "baz");
+ .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz", "bazAlt")
+ .returnRow(2, READONLY_ACCOUNT_TYPE, null, 13, "foo", "baz", "bazAlt");
assertWithMessageId(R.string.readOnlyContactDeleteConfirmation);
}
public void testMultipleWritableRawContacts() {
expectQuery()
- .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz")
- .returnRow(2, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz");
+ .returnRow(1, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz", "bazAlt")
+ .returnRow(2, WRITABLE_ACCOUNT_TYPE, null, 13, "foo", "baz", "bazAlt");
assertWithMessageId(R.string.multipleContactDeleteConfirmation);
}
private Query expectQuery() {
return mContactsProvider.expectQuery(ENTITY_URI).withProjection(
Entity.RAW_CONTACT_ID, Entity.ACCOUNT_TYPE, Entity.DATA_SET, Entity.CONTACT_ID,
- Entity.LOOKUP_KEY, Entity.DISPLAY_NAME);
+ Entity.LOOKUP_KEY, Entity.DISPLAY_NAME, Entity.DISPLAY_NAME_ALTERNATIVE);
}
private void assertWithMessageId(int messageId) {