FileDocCategorySizeDatePackage
DialerKeyListener.javaAPI DocAndroid 5.1 API3513Thu Mar 12 22:22:10 GMT 2015android.text.method

DialerKeyListener

public class DialerKeyListener extends NumberKeyListener
For dialing-only text entry

As for all implementations of {@link KeyListener}, this class is only concerned with hardware keyboards. Software input methods have no obligation to trigger the methods in this class.

Fields Summary
public static final char[]
CHARACTERS
The characters that are used.
private static DialerKeyListener
sInstance
Constructors Summary
Methods Summary
protected char[]getAcceptedChars()

        return CHARACTERS;
    
public intgetInputType()

        return InputType.TYPE_CLASS_PHONE;
    
public static android.text.method.DialerKeyListenergetInstance()

        if (sInstance != null)
            return sInstance;

        sInstance = new DialerKeyListener();
        return sInstance;
    
protected intlookup(android.view.KeyEvent event, android.text.Spannable content)
Overrides the superclass's lookup method to prefer the number field from the KeyEvent.

        int meta = getMetaState(content, event);
        int number = event.getNumber();

        /*
         * Prefer number if no meta key is active, or if it produces something
         * valid and the meta lookup does not.
         */
        if ((meta & (MetaKeyKeyListener.META_ALT_ON | MetaKeyKeyListener.META_SHIFT_ON)) == 0) {
            if (number != 0) {
                return number;
            }
        }

        int match = super.lookup(event, content);

        if (match != 0) {
            return match;
        } else {
            /*
             * If a meta key is active but the lookup with the meta key
             * did not produce anything, try some other meta keys, because
             * the user might have pressed SHIFT when they meant ALT,
             * or vice versa.
             */

            if (meta != 0) {
                KeyData kd = new KeyData();
                char[] accepted = getAcceptedChars();

                if (event.getKeyData(kd)) {
                    for (int i = 1; i < kd.meta.length; i++) {
                        if (ok(accepted, kd.meta[i])) {
                            return kd.meta[i];
                        }
                    }
                }
            }

            /*
             * Otherwise, use the number associated with the key, since
             * whatever they wanted to do with the meta key does not
             * seem to be valid here.
             */

            return number;
        }