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无法弹出输入法问题相关推荐

  1. android 盒子输入法不弹出来,Android EditText不弹出输入法焦点问题的总结

    看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属性:android:windowSoftInputMod ...

  2. Android EditText不弹出输入法焦点问题的总结

    同样的代码,碰到有EditText控件的界面时有的机子会弹出输入法,有的机子不会弹出.不好意思,这问题我也一头雾水,谁知道可以告诉我,否则我就把这个问题留下来,以后研究android 源码时再搞个清楚 ...

  3. Android使用Windows弹出输入法

    Android系统除了可以使用InputMethodManager来弹出输入法外,还可以使用window弹出输入法,特别是在弹窗里有Edittext需要自动弹出输入法时,使用window弹出输入法比较 ...

  4. Android禁止EditText弹出输入法

    网上方法很多,尝试的方法包括但不限于: 1.在AndroidMainfest.xml对应的Activity中加入android:windowSoftInputMode="stateHidde ...

  5. android自定义alertdialog不现实输入法,自定义的dialog中的EditText无法弹出输入法解决方案...

    1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...

  6. android中自定义的dialog中的EditText无法弹出输入法解决方案

    1.解决无法弹出输入法: 在show()方法调用之前,用dialog.setView(new EditText(context))添加一个空的EditText,由于是自定义的AlertDialog,有 ...

  7. WindowManager解析(二)Android悬浮框无法弹出输入法的原因和无需权限显示悬浮窗

    Android悬浮框无法弹出输入法 最近要研究悬浮窗方面的东西,遇到一个问题,我的悬浮窗里面有一个输入框,但是不弹出输入法,后来找到一个方法: 在WindowManager的实例获取方式不对,之前是这 ...

  8. Android EditText设置弹出数字输入法键盘

    Android EditText 设置弹出数字输入法键盘 首先设置只能输入数字: <EditText Android:id="@+id/edit_digit_input" a ...

  9. Android自定义底部弹出窗-dialog(2种实现分析+源码)

    Android自定义底部弹出窗-dialog(2种实现分析+源码) 上线项目功能抽取,在项目开发中,我们会在许多地方会用到底部自定义弹窗,比如设置:个人账户退出,切换,照片的拍照或者相册的调出,或者一 ...

最新文章

  1. ES集群状态、节点、索引等查看及根据字段、排序查询
  2. 科学互驳:大脑细胞活到老,长到老?
  3. WORD中怎么把文字转换成表格
  4. 家门口的医疗新体验,网易云信携手嘉虹健康打造互联网医院新场景
  5. C++11:继承构造函数
  6. 第一季1:HI3518EV200的体验
  7. Vue入门 ---- 仿百度搜索
  8. 唤醒屏幕_小度在家VS天猫精灵CC 屏幕正在让智能音箱进入下一版本
  9. java去掉mongodb日志_JAVA开发 Mongodb3.0以上 去掉控制台DEBUG信息
  10. 交通部 城轨交通运营管理规定_重庆启动节前轨道交通运营管理安全执法检查...
  11. sql server系统表详细说明(2)
  12. python源码剖析_Python源码剖析
  13. 14届数独-真题标准数独-Day 3-20220118
  14. 福州船政计算机专业多少钱,福建船政交通职业学院怎么样排名多少?特色专业?录取分数线及收费...
  15. 全网最细最全OLAP之clickhouse笔记|clickhouse文档|clickhouse揭秘文档(三)--clickhouse单机安装和clickhouse集群安装
  16. 港澳出入境通行证办事流程
  17. hdf知道这些就够了
  18. 小技巧(10):使用Python绘制激活函数(Sigmoid、Tanh、ReLU、PReLU)图像
  19. keil编译代码Program Size详解
  20. linux学习笔记二

热门文章

  1. HDMI,VGA,DVI,DP,MINI DP,AV等影音设备接口规格
  2. Android 友盟推送SDK集成---一路艰辛
  3. [tts] WaveNet初步理解
  4. Windows10锁屏壁纸提取
  5. python算法之迭代算法
  6. **微信小程序图片上传+后台PHP修改图片名称**
  7. 在计算机使用获得外汇软件
  8. PLC做北向服务端的应用
  9. Netlify搭建个人博客设置域名
  10. (四)本地镜像发布到阿里云将阿里云上的镜像下载到本地