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

时间:2018-04-20 11:09:20

标签: android android-intent android-edittext keyboard gif

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

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

4 个答案:

答案 0 :(得分:1)

对于EditText,请设置以下选项。

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

示例:

android:layout_width="match_parent"
android:layout_height="wrap_content"              
android:privateImeOptions="disableSticker=true;disableGifKeyboard=true"/>

答案 1 :(得分:1)

在Samsung galaxy S9 +三星键盘,Android 9上进行了测试

和魅族Pro6 GBoard,Android6。完美运行

要修复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;
            });
}

}

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

{
    Toast.makeText(getContext(), "No gif support", Toast.LENGTH_SHORT).show();
    return true;
}

要修复三星键盘,只需在编辑xml中添加以下行

  

android:privateImeOptions =“ disableSticker = true; disableGifKeyboard = true”

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

答案 2 :(得分:0)

在收到具有动作ACTION_SEND意图的活动中,将其添加到onCreate()

 if (!isTaskRoot()) {
            Toast.makeText(context, "GIF is not allowed here", Toast.LENGTH_LONG).show();
            finish();
            return;
        }

因此,当应用程序已经打开时,isTaskRoot()返回false,并且Activity将关闭,并且应用程序将从其保留的位置恢复。

答案 3 :(得分:0)

我做了以下技巧:

view.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_AUTO_CORRECT)

将这些标志设置为您的视图,Gboard隐藏GIF按钮。