在Android(安卓)app中切换自定义的输入法
16lz
2021-12-13
遇到的问题:
之前自己写了一个自定义的Android输入法(secureKeyboard),已经能够在Android的设置settings中看到了,见图1,也能够在settings中设置其为全局输入法,但是现在遇到的问题是想要在demo中进行切换输入法的操作。比如点击一个按钮,弹出输入法列表,此时进行切换输入法的操作,切换完成后全局输入法即发生了对应的改变。一直以为要提升demo权限才能使其修改系统的设置,比如说修改系统全局的输入法,其实不需要的,实现的方法很简单啊。
图1
实现的方法:
其实很简单,用好InputMethodManager即可。
先贴核心代码:
MainActivity.java
package com.example.leidong.imechange;import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.inputmethod.InputMethodInfo;import android.view.inputmethod.InputMethodManager;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import java.util.List;public class MainActivity extends AppCompatActivity { private TextView textView; private EditText editText; private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); //拿到输入法的全部条目 List list = imm.getInputMethodList(); //textView中显示输入法的全部条目 textView.setText(list.toString()); //输入法选择框 imm.showInputMethodPicker(); } }); } private void init() { textView = (TextView)findViewById(R.id.textView); editText = (EditText)findViewById(R.id.editText); button = (Button)findViewById(R.id.button); }}
这其中按钮点击的那四行代码是关键,实现了显示Android中输入法和显示输入法切换选择对话框这两个功能。 activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
AndroidManifest.xml不需要做任何修改,就是新建工程时的就OK。
测试结果
1.首先运行demo,见图2
图2
2.点击CHANGE IME按钮,可以看到输入法切换列表已经打开,且textView中显示了系统中的全部输入法信息,见图3。
图3
3.勾选自己之前写好的输入法,发现在本demo中输入法已经改变,见图4;并且在其他应用中输入法也已经改变,见图5。
图4 图5
更多相关文章
- android输入法特殊字符修改
- Android(安卓)开发笔记——全局变量
- Android(安卓)手动显示和隐藏软键盘
- Android捕获全局异常
- Android(安卓)EditText默认不弹出输入法
- Android输入法的显示或隐藏
- android 软键盘 InputMethodManager
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Fedora镜像
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像