微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android.provider.UserDictionary.Words的实例源码

项目:keepass2android    文件UserDictionary.java   
public UserDictionary(Context context,String locale) {
    super(context,Suggest.DIC_USER);
    mLocale = locale;
    // Perform a managed query. The Activity will handle closing and requerying the cursor
    // when needed.
    ContentResolver cres = context.getContentResolver();

    cres.registerContentObserver(Words.CONTENT_URI,true,mObserver = new ContentObserver(null) {
        @Override
        public void onChange(boolean self) {
            setRequiresReload(true);
        }
    });

    loadDictionary();
}
项目:AOSP-Kayboard-7.1.2    文件UserBinaryDictionary.java   
private void addWordsLocked(final Cursor cursor) {
    if (cursor == null) return;
    if (cursor.movetoFirst()) {
        final int indexWord = cursor.getColumnIndex(Words.WORD);
        final int indexFrequency = cursor.getColumnIndex(Words.FREQUENCY);
        while (!cursor.isAfterLast()) {
            final String word = cursor.getString(indexWord);
            final int frequency = cursor.getInt(indexFrequency);
            final int adjustedFrequency = scaleFrequencyFromDefaultToLatinime(frequency);
            // Safeguard against adding really long words.
            if (word.length() <= MAX_WORD_LENGTH) {
                runGCIfrequiredLocked(true /* mindsBlockByGC */);
                addUnigramlocked(word,adjustedFrequency,false /* isNotAWord */,false /* isPossiblyOffensive */,BinaryDictionary.NOT_A_VALID_TIMESTAMP);
            }
            cursor.movetoNext();
        }
    }
}
项目:KeePass2Android    文件UserDictionary.java   
public UserDictionary(Context context,mObserver = new ContentObserver(null) {
        @Override
        public void onChange(boolean self) {
            setRequiresReload(true);
        }
    });

    loadDictionary();
}
项目:Fictionary    文件MainActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView dictListView = (ListView) findViewById(R.id.dictionary_list_view);
    ContentResolver resolver = getContentResolver();
    Cursor cursor = resolver.query(UserDictionary.Words.CONTENT_URI,null,null);
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(),R.layout.listview_layout,cursor,COLUMNS_TO_BE_FOUND,LAYOUT_ITEMS_TO_FILL,0);
    dictListView.setAdapter(adapter);
    registerForContextMenu(dictListView);
}
项目:hackerskeyboard    文件UserDictionary.java   
public UserDictionary(Context context,mObserver = new ContentObserver(null) {
        @Override
        public void onChange(boolean self) {
            setRequiresReload(true);
        }
    });

    loadDictionary();
}
项目:android-kioskime    文件UserBinaryDictionary.java   
private void addWords(final Cursor cursor) {
    final boolean hasShortcutColumn = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
    clearFusionDictionary();
    if (cursor == null) return;
    if (cursor.movetoFirst()) {
        final int indexWord = cursor.getColumnIndex(Words.WORD);
        final int indexShortcut = hasShortcutColumn ? cursor.getColumnIndex(SHORTCUT) : 0;
        final int indexFrequency = cursor.getColumnIndex(Words.FREQUENCY);
        while (!cursor.isAfterLast()) {
            final String word = cursor.getString(indexWord);
            final String shortcut = hasShortcutColumn ? cursor.getString(indexShortcut) : null;
            final int frequency = cursor.getInt(indexFrequency);
            final int adjustedFrequency = scaleFrequencyFromDefaultToLatinime(frequency);
            // Safeguard against adding really long words.
            if (word.length() < MAX_WORD_LENGTH) {
                super.addWord(word,false /* isNotAWord */);
            }
            if (null != shortcut && shortcut.length() < MAX_WORD_LENGTH) {
                super.addWord(shortcut,word,true /* isNotAWord */);
            }
            cursor.movetoNext();
        }
    }
}
项目:android-kioskime    文件UserDictionaryCompatUtils.java   
@SuppressWarnings("deprecation")
public static void addWord(final Context context,final String word,final int freq,final String shortcut,final Locale locale) {
    if (hasNewerAddWord()) {
        CompatUtils.invoke(Words.class,METHOD_addWord,context,freq,shortcut,locale);
    } else {
        // Fall back to the pre-JellyBean method.
        final int localeType;
        if (null == locale) {
            localeType = Words.LOCALE_TYPE_ALL;
        } else {
            final Locale currentLocale = context.getResources().getConfiguration().locale;
            if (locale.equals(currentLocale)) {
                localeType = Words.LOCALE_TYPE_CURRENT;
            } else {
                localeType = Words.LOCALE_TYPE_ALL;
            }
        }
        Words.addWord(context,localeType);
    }
}
项目:keepass2android    文件UserDictionary.java   
/**
 * Adds a word to the dictionary and makes it persistent.
 * @param word the word to add. If the word is capitalized,then the dictionary will
 * recognize it as a capitalized word when searched.
 * @param frequency the frequency of occurrence of the word. A frequency of 255 is considered
 * the highest.
 * @Todo use a higher or float range for frequency
 */
@Override
public synchronized void addWord(String word,int frequency) {
    // Force load the dictionary here synchronously
    if (getRequiresReload()) loadDictionaryAsync();
    // Safeguard against adding long words. Can cause stack overflow.
    if (word.length() >= getMaxWordLength()) return;

    super.addWord(word,frequency);

    // Update the user dictionary provider
    final ContentValues values = new ContentValues(5);
    values.put(Words.WORD,word);
    values.put(Words.FREQUENCY,frequency);
    values.put(Words.LOCALE,mLocale);
    values.put(Words.APP_ID,0);

    final ContentResolver contentResolver = getContext().getContentResolver();
    new Thread("addWord") {
        public void run() {
            contentResolver.insert(Words.CONTENT_URI,values);
        }
    }.start();

    // In case the above does a synchronous callback of the change observer
    setRequiresReload(false);
}
项目:AOSP-Kayboard-7.1.2    文件AndroidWordLevelSpellCheckerSession.java   
AndroidWordLevelSpellCheckerSession(final AndroidSpellCheckerService service) {
    mService = service;
    final ContentResolver cres = service.getContentResolver();

    mObserver = new ContentObserver(null) {
        @Override
        public void onChange(boolean self) {
            mSuggestionsCache.clearCache();
        }
    };
    cres.registerContentObserver(Words.CONTENT_URI,mObserver);
}
项目:KeePass2Android    文件UserDictionary.java   
/**
 * Adds a word to the dictionary and makes it persistent.
 * @param word the word to add. If the word is capitalized,values);
        }
    }.start();

    // In case the above does a synchronous callback of the change observer
    setRequiresReload(false);
}
项目:hackerskeyboard    文件UserDictionary.java   
@Override
public void loadDictionaryAsync() {
    Cursor cursor = getContext().getContentResolver()
            .query(Words.CONTENT_URI,PROJECTION,"(locale IS NULL) or (locale=?)",new String[] { mLocale },null);
    addWords(cursor);
}
项目:hackerskeyboard    文件UserDictionary.java   
/**
 * Adds a word to the dictionary and makes it persistent.
 * @param word the word to add. If the word is capitalized,values);
        }
    }.start();

    // In case the above does a synchronous callback of the change observer
    setRequiresReload(false);
}
项目:android-kioskime    文件AndroidWordLevelSpellCheckerSession.java   
AndroidWordLevelSpellCheckerSession(final AndroidSpellCheckerService service) {
    mService = service;
    final ContentResolver cres = service.getContentResolver();

    mObserver = new ContentObserver(null) {
        @Override
        public void onChange(boolean self) {
            mSuggestionsCache.clearCache();
        }
    };
    cres.registerContentObserver(Words.CONTENT_URI,mObserver);
}
项目:android-kioskime    文件UserBinaryDictionary.java   
private String getChangedWordForUri(final Uri uri) {
    final Cursor cursor = mContext.getContentResolver().query(uri,PROJECTION_QUERY,null);
    if (cursor == null) return null;
    try {
        if (!cursor.movetoFirst()) return null;
        final int indexWord = cursor.getColumnIndex(Words.WORD);
        return cursor.getString(indexWord);
    } finally {
        cursor.close();
    }
}
项目:android-kioskime    文件UserBinaryDictionary.java   
public boolean isEnabled() {
    final ContentResolver cr = mContext.getContentResolver();
    final ContentProviderClient client = cr.acquireContentProviderClient(Words.CONTENT_URI);
    if (client != null) {
        client.release();
        return true;
    } else {
        return false;
    }
}
项目:android-kioskime    文件UserBinaryDictionary.java   
public UserBinaryDictionary(final Context context,final String locale,final boolean alsoUseMoreRestrictiveLocales) {
    super(context,getFilenameWithLocale(NAME,locale),Dictionary.TYPE_USER);
    if (null == locale) throw new NullPointerException(); // Catch the error earlier
    if (SubtypeLocale.NO_LANGUAGE.equals(locale)) {
        // If we don't have a locale,insert into the "all locales" user dictionary.
        mLocale = USER_DICTIONARY_ALL_LANGUAGES;
    } else {
        mLocale = locale;
    }
    mAlsoUseMoreRestrictiveLocales = alsoUseMoreRestrictiveLocales;
    // Perform a managed query. The Activity will handle closing and re-querying the cursor
    // when needed.
    ContentResolver cres = context.getContentResolver();

    mObserver = new ContentObserver(null) {
        @Override
        public void onChange(final boolean self) {
            // This hook is deprecated as of API level 16 (Build.VERSION_CODES.JELLY_BEAN),// but should still be supported for cases where the IME is running on an older
            // version of the platform.
            onChange(self,null);
        }
        // The following hook is only available as of API level 16
        // (Build.VERSION_CODES.JELLY_BEAN),and as such it will only work on JellyBean+
        // devices. On older versions of the platform,the hook above will be called instead.
        @Override
        public void onChange(final boolean self,final Uri uri) {
            setRequiresReload(true);
            // We want to report back to Latin IME in case the user just entered the word.
            // If the user changed the word in the dialog Box,then we want to replace
            // what was entered in the text field.
            if (null == uri || !(context instanceof LatiniME)) return;
            final long changedRowId = ContentUris.parseId(uri);
            if (-1 == changedRowId) return; // UnkNown content... Not sure why we're here
            final String changedWord = getChangedWordForUri(uri);
            ((LatiniME)context).onWordAddedToUserDictionary(changedWord);
        }
    };
    cres.registerContentObserver(Words.CONTENT_URI,mObserver);

    loadDictionary();
}
项目:android-kioskime    文件UserBinaryDictionary.java   
@Override
public void loadDictionaryAsync() {
    // Split the locale. For example "en" => ["en"],"de_DE" => ["de","DE"],// "en_US_foo_bar_qux" => ["en","US","foo_bar_qux"] because of the limit of 3.
    // This is correct for locale processing.
    // For this example,we'll look at the "en_US_POSIX" case.
    final String[] localeElements =
            TextUtils.isEmpty(mLocale) ? new String[] {} : mLocale.split("_",3);
    final int length = localeElements.length;

    final StringBuilder request = new StringBuilder("(locale is NULL)");
    String localeSoFar = "";
    // At start,localeElements = ["en","POSIX"] ; localeSoFar = "" ;
    // and request = "(locale is NULL)"
    for (int i = 0; i < length; ++i) {
        // i | localeSoFar    | localeElements
        // 0 | ""             | ["en","POSIX"]
        // 1 | "en_"          | ["en","POSIX"]
        // 2 | "en_US_"       | ["en","en_US","POSIX"]
        localeElements[i] = localeSoFar + localeElements[i];
        localeSoFar = localeElements[i] + "_";
        // i | request
        // 0 | "(locale is NULL)"
        // 1 | "(locale is NULL) or (locale=?)"
        // 2 | "(locale is NULL) or (locale=?) or (locale=?)"
        request.append(" or (locale=?)");
    }
    // At the end,"en_US_POSIX"]; localeSoFar = en_US_POSIX_"
    // and request = "(locale is NULL) or (locale=?) or (locale=?) or (locale=?)"

    final String[] requestArguments;
    // If length == 3,we already have all the arguments we need (common prefix is meaningless
    // inside variants
    if (mAlsoUseMoreRestrictiveLocales && length < 3) {
        request.append(" or (locale like ?)");
        // The following creates an array with one more (null) position
        final String[] localeElementsWithMoreRestrictiveLocalesIncluded =
                Arrays.copyOf(localeElements,length + 1);
        localeElementsWithMoreRestrictiveLocalesIncluded[length] =
                localeElements[length - 1] + "_%";
        requestArguments = localeElementsWithMoreRestrictiveLocalesIncluded;
        // If for example localeElements = ["en"]
        // then requestArguments = ["en","en_%"]
        // and request = (locale is NULL) or (locale=?) or (locale like ?)
        // If localeElements = ["en","en_US"]
        // then requestArguments = ["en","en_US_%"]
    } else {
        requestArguments = localeElements;
    }
    final Cursor cursor = mContext.getContentResolver().query(
            Words.CONTENT_URI,request.toString(),requestArguments,null);
    try {
        addWords(cursor);
    } finally {
        if (null != cursor) cursor.close();
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。