Android Dialog无法弹出输入法问题
Dialog如果带Edittext 等输入控件,Android其实已经默认弹出输入法了。
延时弹出没用,延时弹出没用,延时弹出没用,延时弹出没用
网络上其他不弹出的情况,
1.低版本可能不兼容,需要强制弹出
InputMethodManager m = (InputMethodManager) editText.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
m.toggleSoftInput(
0
, InputMethodManager.HIDE_NOT_ALWAYS);
2.百度或者搜狗输入法不支持dialog弹出
鉴于这个问题,如果第三方输入法无法解决,那就自己强制把默认输入法改成Android键盘
获取键盘列表
/*** Get list of enabled InputMethod*/public static List<InputMethodInfo> getEnabledSystemInputMethodList(Context context) {InputMethodManager inputMethodManager =(InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);List<InputMethodInfo> enabledInputMethodInfos =new ArrayList<>(inputMethodManager.getEnabledInputMethodList());// Filter auxiliary keyboards out
// enabledInputMethodInfos.removeIf(InputMethodInfo::isAuxiliaryIme);return enabledInputMethodInfos;}
获取默认输入法ID
/*** Get id of default InputMethod*/public static String getDefaultInputMethodId(Context context) {return Settings.Secure.getString(context.getContentResolver(),Settings.Secure.DEFAULT_INPUT_METHOD);}
设置输入法ID
/*** Set default InputMethod by id*/public static void setDefaultInputMethodId(Context context, String imid) {if (imid == null) {throw new IllegalArgumentException("Null ID");}try {int userId = ActivityManager.getCurrentUser();Settings.Secure.putStringForUser(context.getContentResolver(),Settings.Secure.DEFAULT_INPUT_METHOD, imid, userId);Intent intent = new Intent(Intent.ACTION_INPUT_METHOD_CHANGED);intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);intent.putExtra("input_method_id", imid);context.sendBroadcastAsUser(intent, UserHandle.CURRENT);} catch (Exception e) {Log.d(TAG, "set default input method remote exception", e);}}
获取到默认的Android键盘 在进行设置,完美解决Dialog无法弹出键盘问题
private void setDefaultkey(Context context){final PackageManager packageManager = context.getPackageManager();List<InputMethodInfo> enabledInputMethodInfos = InputMethodHelper.getEnabledSystemInputMethodList(context);final List<CharSequence> entries = new ArrayList<>(enabledInputMethodInfos.size());final List<CharSequence> values = new ArrayList<>(enabledInputMethodInfos.size());String androidDefaultKey = "";for (final InputMethodInfo info : enabledInputMethodInfos) {entries.add(info.loadLabel(packageManager));final String id = info.getId();values.add(id);if(id.contains("LatinIME") && id.contains("inputmethod")){androidDefaultKey = id;}}if(TextUtils.isEmpty(androidDefaultKey)){if(enabledInputMethodInfos.size() > 0){androidDefaultKey = enabledInputMethodInfos.get(0).getId();}}if(!TextUtils.isEmpty(androidDefaultKey)){InputMethodHelper.setDefaultInputMethodId(getContext(), androidDefaultKey);}}
3.设置完之后默认输入法改了,在
dismiss还原之前的输入法即可。
@Overridepublic void dismiss() {if(TextUtils.isEmpty(defaultId)){InputMethodHelper.setDefaultInputMethodId(getContext(), defaultId);}super.dismiss();}
Android Dialog无法弹出输入法问题相关推荐
- android 盒子输入法不弹出来,Android EditText不弹出输入法焦点问题的总结
看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属性:android:windowSoftInputMod ...
- Android EditText不弹出输入法焦点问题的总结
同样的代码,碰到有EditText控件的界面时有的机子会弹出输入法,有的机子不会弹出.不好意思,这问题我也一头雾水,谁知道可以告诉我,否则我就把这个问题留下来,以后研究android 源码时再搞个清楚 ...
- Android使用Windows弹出输入法
Android系统除了可以使用InputMethodManager来弹出输入法外,还可以使用window弹出输入法,特别是在弹窗里有Edittext需要自动弹出输入法时,使用window弹出输入法比较 ...
- Android禁止EditText弹出输入法
网上方法很多,尝试的方法包括但不限于: 1.在AndroidMainfest.xml对应的Activity中加入android:windowSoftInputMode="stateHidde ...
- android自定义alertdialog不现实输入法,自定义的dialog中的EditText无法弹出输入法解决方案...
1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...
- android中自定义的dialog中的EditText无法弹出输入法解决方案
1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...
- WindowManager解析(二)Android悬浮框无法弹出输入法的原因和无需权限显示悬浮窗
Android悬浮框无法弹出输入法 最近要研究悬浮窗方面的东西,遇到一个问题,我的悬浮窗里面有一个输入框,但是不弹出输入法,后来找到一个方法: 在WindowManager的实例获取方式不对,之前是这 ...
- Android EditText设置弹出数字输入法键盘
Android EditText 设置弹出数字输入法键盘 首先设置只能输入数字: <EditText Android:id="@+id/edit_digit_input" a ...
- Android自定义底部弹出窗-dialog(2种实现分析+源码)
Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...
最新文章
- ES集群状态、节点、索引等查看及根据字段、排序查询
- 科学互驳:大脑细胞活到老,长到老?
- WORD中怎么把文字转换成表格
- 家门口的医疗新体验,网易云信携手嘉虹健康打造互联网医院新场景
- C++11:继承构造函数
- 第一季1:HI3518EV200的体验
- Vue入门 ---- 仿百度搜索
- 唤醒屏幕_小度在家VS天猫精灵CC 屏幕正在让智能音箱进入下一版本
- java去掉mongodb日志_JAVA开发 Mongodb3.0以上 去掉控制台DEBUG信息
- 交通部 城轨交通运营管理规定_重庆启动节前轨道交通运营管理安全执法检查...
- sql server系统表详细说明(2)
- python源码剖析_Python源码剖析
- 14届数独-真题标准数独-Day 3-20220118
- 福州船政计算机专业多少钱,福建船政交通职业学院怎么样排名多少?特色专业?录取分数线及收费...
- 全网最细最全OLAP之clickhouse笔记|clickhouse文档|clickhouse揭秘文档(三)--clickhouse单机安装和clickhouse集群安装
- 港澳出入境通行证办事流程
- hdf知道这些就够了
- 小技巧(10):使用Python绘制激活函数(Sigmoid、Tanh、ReLU、PReLU)图像
- keil编译代码Program Size详解
- linux学习笔记二