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

Commit 9e5d7abe authored by Satoshi Kataoka's avatar Satoshi Kataoka Committed by Android Git Automerger
Browse files

am eab27c1e: Merge "Add account e-mail addresses to the user dictionary"

* commit 'eab27c1e':
  Add account e-mail addresses to the user dictionary
parents c6143574 eab27c1e
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.inputmethod.latin;

import com.android.inputmethod.latin.personalization.AccountUtils;

import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
@@ -28,6 +30,7 @@ import android.provider.ContactsContract.Contacts;
import android.text.TextUtils;
import android.util.Log;

import java.util.List;
import java.util.Locale;

public class ContactsBinaryDictionary extends ExpandableBinaryDictionary {
@@ -105,11 +108,27 @@ public class ContactsBinaryDictionary extends ExpandableBinaryDictionary {
    @Override
    public void loadDictionaryAsync() {
        clearFusionDictionary();
        loadDeviceAccountsEmailAddresses();
        loadDictionaryAsyncForUri(ContactsContract.Profile.CONTENT_URI);
        // TODO: Switch this URL to the newer ContactsContract too
        loadDictionaryAsyncForUri(Contacts.CONTENT_URI);
    }

    private void loadDeviceAccountsEmailAddresses() {
        final List<String> accountVocabulary =
                AccountUtils.getDeviceAccountsEmailAddresses(mContext);
        if (accountVocabulary == null || accountVocabulary.isEmpty()) {
            return;
        }
        for (String word : accountVocabulary) {
            if (DEBUG) {
                Log.d(TAG, "loadAccountVocabulary: " + word);
            }
            super.addWord(word, null /* shortcut */, FREQUENCY_FOR_CONTACTS,
                    false /* isNotAWord */);
        }
    }

    private void loadDictionaryAsyncForUri(final Uri uri) {
        try {
            Cursor cursor = mContext.getContentResolver()
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.inputmethod.latin.personalization;

import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;
import android.util.Patterns;

import java.util.ArrayList;
import java.util.List;

public class AccountUtils {
    private AccountUtils() {
        // This utility class is not publicly instantiable.
    }

    private static Account[] getAccounts(final Context context) {
        return AccountManager.get(context).getAccounts();
    }

    public static List<String> getDeviceAccountsEmailAddresses(final Context context) {
        final ArrayList<String> retval = new ArrayList<String>();
        for (final Account account : getAccounts(context)) {
            final String name = account.name;
            if (Patterns.EMAIL_ADDRESS.matcher(name).matches()) {
                retval.add(name);
                retval.add(name.split("@")[0]);
            }
        }
        return retval;
    }
}