我的应用的目标API是27(奥利奥)。我的应用程序使用EditText控件进行文本输入。但是,从谷歌键盘现在可以插入GIF。在这种情况下,我的应用程序接收ACTION_SEND意图,从键盘插入gif,这是为完全不同的功能实现的。因此,它只会混淆整个应用流程,并使用户完全不同的活动。
我希望我的EditText只接受文字,并且不允许用户在那里插入任何gif。如何配置EditText以停止允许从键盘插入GIFS?
答案 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”
答案 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
按钮。