Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c5a5580 authored by Walter Jang's avatar Walter Jang
Browse files

Workaround AccountWithDataSet problems on work profiles

Bug 29417435
Bug 18641067

Change-Id: I31084b0f69a8e56b88610afe6e18d6f01e6cabe9
parent 6f3dadc2
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -356,11 +356,16 @@ public class ContactSelectionActivity extends ContactsActivity
            }

            case ContactsRequest.ACTION_PICK_GROUP_MEMBERS: {
                final AccountWithDataSet account = getIntent().getParcelableExtra(
                        UiIntentActions.GROUP_ACCOUNT_WITH_DATA_SET);
                final String accountName = getIntent().getStringExtra(
                        UiIntentActions.GROUP_ACCOUNT_NAME);
                final String accountType = getIntent().getStringExtra(
                        UiIntentActions.GROUP_ACCOUNT_TYPE);
                final String accountDataSet = getIntent().getStringExtra(
                        UiIntentActions.GROUP_ACCOUNT_DATA_SET);
                final ArrayList<String> contactIds = getIntent().getStringArrayListExtra(
                        UiIntentActions.GROUP_CONTACT_IDS);
                mListFragment = GroupMemberPickerFragment.newInstance(account, contactIds);
                mListFragment = GroupMemberPickerFragment.newInstance(
                        accountName, accountType, accountDataSet, contactIds);
                break;
            }

+3 −2
Original line number Diff line number Diff line
@@ -363,8 +363,9 @@ public class GroupMembersActivity extends AppCompatContactsActivity implements
            case R.id.menu_add: {
                final Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType(ContactsContract.Groups.CONTENT_ITEM_TYPE);
                intent.putExtra(UiIntentActions.GROUP_ACCOUNT_WITH_DATA_SET,
                        mGroupMetadata.createAccountWithDataSet());
                intent.putExtra(UiIntentActions.GROUP_ACCOUNT_NAME, mGroupMetadata.accountName);
                intent.putExtra(UiIntentActions.GROUP_ACCOUNT_TYPE, mGroupMetadata.accountType);
                intent.putExtra(UiIntentActions.GROUP_ACCOUNT_DATA_SET, mGroupMetadata.dataSet);
                intent.putExtra(UiIntentActions.GROUP_CONTACT_IDS,
                        getExistingGroupMemberContactIds());
                startActivityForResult(intent, RESULT_GROUP_ADD_MEMBER);
+5 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.contacts.list;

import android.accounts.Account;
import android.app.Activity;
import android.app.SearchManager;
import android.content.Intent;
@@ -94,8 +95,10 @@ public class ContactsIntentResolver {
                request.setActionCode(ContactsRequest.ACTION_PICK_EMAIL);
            } else if (Groups.CONTENT_ITEM_TYPE.equals(resolvedType)) {
                request.setActionCode(ContactsRequest.ACTION_PICK_GROUP_MEMBERS);
                request.setAccountWithDataSet(intent.<AccountWithDataSet> getParcelableExtra(
                        UiIntentActions.GROUP_ACCOUNT_WITH_DATA_SET));
                request.setAccountWithDataSet(new AccountWithDataSet(
                        intent.getStringExtra(UiIntentActions.GROUP_ACCOUNT_NAME),
                        intent.getStringExtra(UiIntentActions.GROUP_ACCOUNT_TYPE),
                        intent.getStringExtra(UiIntentActions.GROUP_ACCOUNT_DATA_SET)));
                request.setRawContactIds(intent.getStringArrayListExtra(
                        UiIntentActions.GROUP_CONTACT_IDS));
            }
+0 −3
Original line number Diff line number Diff line
@@ -16,10 +16,7 @@

package com.android.contacts.list;

import android.content.Intent;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;

import com.android.contacts.common.model.account.AccountWithDataSet;

+24 −11
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import com.android.contacts.common.list.ContactEntryListFragment;
import com.android.contacts.common.list.ContactListAdapter.ContactQuery;
import com.android.contacts.common.list.ContactListFilter;
import com.android.contacts.common.list.DefaultContactListAdapter;
import com.android.contacts.common.model.account.AccountWithDataSet;

import java.util.ArrayList;

@@ -41,10 +40,14 @@ public class GroupMemberPickerFragment extends

    public static final String TAG = "GroupMemberPicker";

    private static final String KEY_ACCOUNT = "account";
    private static final String KEY_ACCOUNT_NAME = "accountName";
    private static final String KEY_ACCOUNT_TYPE = "accountType";
    private static final String KEY_ACCOUNT_DATA_SET = "accountDataSet";
    private static final String KEY_RAW_CONTACT_IDS = "rawContactIds";

    private static final String ARG_ACCOUNT = "account";
    private static final String ARG_ACCOUNT_NAME = "accountName";
    private static final String ARG_ACCOUNT_TYPE = "accountType";
    private static final String ARG_ACCOUNT_DATA_SET = "accountDataSet";
    private static final String ARG_RAW_CONTACT_IDS = "rawContactIds";

    /** Callbacks for host of {@link GroupMemberPickerFragment}. */
@@ -132,14 +135,18 @@ public class GroupMemberPickerFragment extends
        }
    }

    private AccountWithDataSet mAccount;
    private String mAccountName;
    private String mAccountType;
    private String mAccountDataSet;
    private ArrayList<String> mRawContactIds;
    private Listener mListener;

    public static GroupMemberPickerFragment newInstance(AccountWithDataSet account,
            ArrayList<String> rawContactIds) {
    public static GroupMemberPickerFragment newInstance(String accountName, String accountType,
            String accountDataSet, ArrayList<String> rawContactIds) {
        final Bundle args = new Bundle();
        args.putParcelable(ARG_ACCOUNT, account);
        args.putString(ARG_ACCOUNT_NAME, accountName);
        args.putString(ARG_ACCOUNT_TYPE, accountType);
        args.putString(ARG_ACCOUNT_DATA_SET, accountDataSet);
        args.putStringArrayList(ARG_RAW_CONTACT_IDS, rawContactIds);

        final GroupMemberPickerFragment fragment = new GroupMemberPickerFragment();
@@ -158,10 +165,14 @@ public class GroupMemberPickerFragment extends
    @Override
    public void onCreate(Bundle savedState) {
        if (savedState == null) {
            mAccount = getArguments().getParcelable(ARG_ACCOUNT);
            mAccountName = getArguments().getString(ARG_ACCOUNT_NAME);
            mAccountType = getArguments().getString(ARG_ACCOUNT_TYPE);
            mAccountDataSet = getArguments().getString(ARG_ACCOUNT_DATA_SET);
            mRawContactIds = getArguments().getStringArrayList(ARG_RAW_CONTACT_IDS);
        } else {
            mAccount = savedState.getParcelable(KEY_ACCOUNT);
            mAccountName = savedState.getString(KEY_ACCOUNT_NAME);
            mAccountType = savedState.getString(KEY_ACCOUNT_TYPE);
            mAccountDataSet = savedState.getString(KEY_ACCOUNT_DATA_SET);
            mRawContactIds = savedState.getStringArrayList(KEY_RAW_CONTACT_IDS);
        }
        super.onCreate(savedState);
@@ -170,7 +181,9 @@ public class GroupMemberPickerFragment extends
    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelable(KEY_ACCOUNT, mAccount);
        outState.putString(KEY_ACCOUNT_NAME, mAccountName);
        outState.putString(KEY_ACCOUNT_TYPE, mAccountType);
        outState.putString(KEY_ACCOUNT_DATA_SET, mAccountDataSet);
        outState.putStringArrayList(KEY_RAW_CONTACT_IDS, mRawContactIds);
    }

@@ -194,7 +207,7 @@ public class GroupMemberPickerFragment extends
    protected DefaultContactListAdapter createListAdapter() {
        final DefaultContactListAdapter adapter = new DefaultContactListAdapter(getActivity());
        adapter.setFilter(ContactListFilter.createGroupMembersFilter(
                mAccount.type, mAccount.name, mAccount.dataSet));
                mAccountType, mAccountName, mAccountDataSet));
        adapter.setSectionHeaderDisplayEnabled(true);
        adapter.setDisplayPhotos(true);
        return adapter;
Loading