Java源码示例:android.support.v13.view.inputmethod.EditorInfoCompat

示例1
private boolean isCommitContentSupported(
        @Nullable EditorInfo editorInfo, @NonNull String mimeType) {
    if (editorInfo == null) {
        return false;
    }

    final InputConnection ic = getCurrentInputConnection();
    if (ic == null) {
        return false;
    }

    if (!validatePackageName(editorInfo)) {
        return false;
    }

    final String[] supportedMimeTypes = EditorInfoCompat.getContentMimeTypes(editorInfo);
    for (String supportedMimeType : supportedMimeTypes) {
        if (ClipDescription.compareMimeTypes(mimeType, supportedMimeType)) {
            return true;
        }
    }
    return false;
}
 
示例2
private boolean isCommitContentSupported(
        @Nullable EditorInfo editorInfo, @NonNull String mimeType) {
    if (editorInfo == null) {
        return false;
    }

    final InputConnection ic = getCurrentInputConnection();
    if (ic == null) {
        return false;
    }

    if (!validatePackageName(editorInfo)) {
        return false;
    }

    final String[] supportedMimeTypes = EditorInfoCompat.getContentMimeTypes(editorInfo);
    for (String supportedMimeType : supportedMimeTypes) {
        if (ClipDescription.compareMimeTypes(mimeType, supportedMimeType)) {
            return true;
        }
    }
    return false;
}
 
示例3
/**
 * Creates a new instance of {@link EditText} that is configured to specify the given content
 * MIME types to EditorInfo#contentMimeTypes so that developers can locally test how the current
 * input method behaves for such content MIME types.
 *
 * @param contentMimeTypes A {@link String} array that indicates the supported content MIME
 *                         types
 * @return a new instance of {@link EditText}, which specifies EditorInfo#contentMimeTypes with
 * the given content MIME types
 */
private EditText createEditTextWithContentMimeTypes(String[] contentMimeTypes) {
    final CharSequence hintText;
    final String[] mimeTypes;  // our own copy of contentMimeTypes.
    if (contentMimeTypes == null || contentMimeTypes.length == 0) {
        hintText = "MIME: []";
        mimeTypes = new String[0];
    } else {
        hintText = "MIME: " + Arrays.toString(contentMimeTypes);
        mimeTypes = Arrays.copyOf(contentMimeTypes, contentMimeTypes.length);
    }
    EditText exitText = new EditText(this) {
        @Override
        public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
            final InputConnection ic = super.onCreateInputConnection(editorInfo);
            EditorInfoCompat.setContentMimeTypes(editorInfo, mimeTypes);
            final InputConnectionCompat.OnCommitContentListener callback =
                    new InputConnectionCompat.OnCommitContentListener() {
                        @Override
                        public boolean onCommitContent(InputContentInfoCompat inputContentInfo,
                                int flags, Bundle opts) {
                            return MainActivity.this.onCommitContent(
                                    inputContentInfo, flags, opts, mimeTypes);
                        }
                    };
            return InputConnectionCompat.createWrapper(ic, editorInfo, callback);
        }
    };
    exitText.setHint(hintText);
    exitText.setTextColor(Color.WHITE);
    exitText.setHintTextColor(Color.WHITE);
    return exitText;
}
 
示例4
@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
    InputConnection inputConnection = super.onCreateInputConnection(outAttrs);
    if (isIncognitoModeEnabled) {
        outAttrs.imeOptions = outAttrs.imeOptions
                | EditorInfoCompat.IME_FLAG_NO_PERSONALIZED_LEARNING;
    }
    return inputConnection;
}
 
示例5
/**
 * Creates a new instance of {@link EditText} that is configured to specify the given content
 * MIME types to EditorInfo#contentMimeTypes so that developers can locally test how the current
 * input method behaves for such content MIME types.
 *
 * @param contentMimeTypes A {@link String} array that indicates the supported content MIME
 *                         types
 * @return a new instance of {@link EditText}, which specifies EditorInfo#contentMimeTypes with
 * the given content MIME types
 */
private EditText createEditTextWithContentMimeTypes(String[] contentMimeTypes) {
    final CharSequence hintText;
    final String[] mimeTypes;  // our own copy of contentMimeTypes.
    if (contentMimeTypes == null || contentMimeTypes.length == 0) {
        hintText = "MIME: []";
        mimeTypes = new String[0];
    } else {
        hintText = "MIME: " + Arrays.toString(contentMimeTypes);
        mimeTypes = Arrays.copyOf(contentMimeTypes, contentMimeTypes.length);
    }
    EditText exitText = new EditText(this) {
        @Override
        public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
            final InputConnection ic = super.onCreateInputConnection(editorInfo);
            EditorInfoCompat.setContentMimeTypes(editorInfo, mimeTypes);
            final InputConnectionCompat.OnCommitContentListener callback =
                    new InputConnectionCompat.OnCommitContentListener() {
                        @Override
                        public boolean onCommitContent(InputContentInfoCompat inputContentInfo,
                                int flags, Bundle opts) {
                            return MainActivity.this.onCommitContent(
                                    inputContentInfo, flags, opts, mimeTypes);
                        }
                    };
            return InputConnectionCompat.createWrapper(ic, editorInfo, callback);
        }
    };
    exitText.setHint(hintText);
    exitText.setTextColor(Color.WHITE);
    exitText.setHintTextColor(Color.WHITE);
    return exitText;
}
 
示例6
@Override
public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
  InputConnection inputConnection = super.onCreateInputConnection(editorInfo);

  if (SilencePreferences.getEnterKeyType(getContext()).equals("send")) {
    editorInfo.imeOptions &= ~EditorInfo.IME_FLAG_NO_ENTER_ACTION;
  }

  if (Build.VERSION.SDK_INT <= 13) return inputConnection;
  if (mediaListener == null)       return inputConnection;

  EditorInfoCompat.setContentMimeTypes(editorInfo, new String[] {"image/jpeg", "image/png", "image/gif"});
  return InputConnectionCompat.createWrapper(inputConnection, editorInfo, new CommitContentListener(mediaListener));
}
 
示例7
@Override
public InputConnection onCreateInputConnection(EditorInfo attrs) {
    InputConnection con = super.onCreateInputConnection(attrs);
    EditorInfoCompat.setContentMimeTypes(attrs, new String[] { "image/gif", "image/png" });

    return InputConnectionCompat.createWrapper(con, attrs, new InputConnectionCompat.OnCommitContentListener() {
        @Override
        public boolean onCommitContent(InputContentInfoCompat inputContentInfo, int flags, Bundle opts) {
            if (callback != null) {
                if (BuildCompat.isAtLeastNMR1() &&
                        (flags & InputConnectionCompat.INPUT_CONTENT_GRANT_READ_URI_PERMISSION) != 0) {
                    try {
                        inputContentInfo.requestPermission();
                    } catch (Exception e) {
                        return false;
                    }
                }

                callback.onImageSelected(
                        inputContentInfo.getContentUri(),
                        inputContentInfo.getDescription().getMimeType(0)
                );

                return true;
            } else {
                return false;
            }
        }
    });
}
 
示例8
@Override
public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
    final InputConnection ic = super.onCreateInputConnection(editorInfo);

    if (mimeTypes != null && mCommitContentListener != null && ic != null) {
        EditorInfoCompat.setContentMimeTypes(editorInfo, mimeTypes);
        return InputConnectionCompat.createWrapper(ic, editorInfo, (inputContentInfo, flags, opts) -> EditMessage.this.mCommitContentListener.onCommitContent(inputContentInfo, flags, opts, mimeTypes));
    } else {
        return ic;
    }
}