我已经创建了虚拟键盘,我必须在其中收到有关特定应用程序是否支持提交内容 api 的通知?
由于我在键盘内使用自定义图像,因此需要进行此检查。
我正在使用输入方法服务,并且已经在演示应用程序中完成
检查以下内容:@Override
public void onStartInputView(EditorInfo info, boolean restarting) {
mGifButton.setEnabled(mGifFile != null && isCommitContentSupported(info, MIME_TYPE_GIF));
mPngButton.setEnabled(mPngFile != null && isCommitContentSupported(info, MIME_TYPE_PNG));
mWebpButton.setEnabled(mWebpFile != null && isCommitContentSupported(info, MIME_TYPE_WEBP));
}
在这里,在上面的代码中,带有"m"首字母的变量是按钮。和方法 onStartInputView
被覆盖,其中它检查支持 API,如果受支持,则按钮将被启用。
没关系,如果不支持,按钮将禁用并将其颜色更改为小暗。现在,由于我正在使用 GridView,我已经执行以下操作:
@Override
public void onStartInputView(EditorInfo info, boolean restarting) {
Log.e(">>>>>>Editor Info : >> ",""+info);
grid.setEnabled(imageFile1 != null && isCommitContentSupported(info, MIME_TYPE_PNG));
}
它完成了,但是用户将收到不支持此功能的通知......因为 GridView 不会更改其颜色或 UI,以便用户将意识到这不起作用。
setEnabled
的返回类型为无效。
那么,这怎么可能呢?
Google在Github上有一个带有提交内容的键盘示例:
https://github.com/googlesamples/android-CommitContentSampleIME/blob/master/app/src/main/java/com/example/android/commitcontent/ime/ImageKeyboard.java
在第 64 行,您有一个验证是否支持提交内容的函数:
private boolean isCommitContentSupported(@Nullable EditorInfo editorInfo, @NonNull String mimeType)
您可以使用 Toast 来通知用户。