Android EditText文本控件 - 如何禁用从Google键盘插入GIF的可能性?

use*_*216 8 keyboard android gif android-intent android-edittext

我的应用程序的目标API是27(奥利奥).我的应用程序使用EditText控件进行文本输入.但是,从Google键盘,现在可以插入GIF.在这种情况下,我的应用程序接收ACTION_SEND意图,从键盘插入gif,这是为完全不同的功能实现的.因此,它只会混淆整个应用流程,并使用户完全不同的活动.

我希望我的EditText只接受文本,不允许用户在那里插入任何gif.如何配置EditText以停止允许从键盘插入GIFS?

小智 5

在三星 Galaxy S9+(三星键盘)、安卓 9 和魅族 Pro6 GBoard、安卓 6 上测试。完美运行

要修复 GBoard,请创建您自己的编辑文本并覆盖方法“onCreateInputConnection(...)”,如下所示:

    public class NoGifEditText extends AppCompatEditText {

    @Override
    public InputConnection onCreateInputConnection(EditorInfo editorInfo) {
        final InputConnection ic = super.onCreateInputConnection(editorInfo);
        EditorInfoCompat.setContentMimeTypes(editorInfo, new String[]{"image/*", "image/png", "image/gif", "image/jpeg"});

        return InputConnectionCompat.createWrapper(ic, editorInfo,
                (inputContentInfo, flags, opts) -> {
                    Toast.makeText(getContext(), "No gif support", Toast.LENGTH_SHORT).show();
                    return true;
                });
    }
}
Run Code Online (Sandbox Code Playgroud)

说明: 输入兼容句柄插入选定的 mimetypes(“image/*”、“image/png”、“image/gif”、“image/jpeg”)并生成事件。您在下面的块中捕获此事件并仅显示消息,该 gif 不受支持。

    {
        Toast.makeText(getContext(), "No gif support", Toast.LENGTH_SHORT).show();
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

要修复三星键盘,只需在编辑 XML 中添加此行

android:privateImeOptions="disableSticker=true;disableGifKeyboard=true"

如您所见,三星键盘上的“添加 gif”按钮被禁用。


小智 3

对于 EditText 设置以下选项。

android:privateImeOptions="disableSticker=true;disableGifKeyboard=true"
Run Code Online (Sandbox Code Playgroud)

例子 :

android:layout_width="match_parent"
android:layout_height="wrap_content"              
android:privateImeOptions="disableSticker=true;disableGifKeyboard=true"/>
Run Code Online (Sandbox Code Playgroud)