android切换输入法工具类

android切换输入法工具类

共享一个切换输入法的工具类,可以实现以下功能

  • 检测输入法是否安装
  • 安装输入法
  • 切换输入法(在utf7Ime和android之间切换,如果需要切换成其他的输入法,请自行修改)

import android.util.Log;

import com.meitu.travelapk.data.ConfigData;
import com.meitu.travelapk.data.PathData;
import com.meitu.travelapk.data.TestReport;

import org.junit.Assert;
import org.junit.Test;

import java.io.File;

/**
 * 用于输入法的管理
 */
public class InputMethodUtils {
    private static final String TAG = "InputMethodUtils";
    public static String UTF7_PKG = "jp.jun_nama.test.utf7ime";
    public static String UTF7_KEY = "jp.jun_nama.test.utf7ime/.Utf7ImeService";
    public static String Android_KEY = "com.android.inputmethod.latin/.LatinIME";

    public enum InputMethod {
        UTF7, ANDROID
    }

    /**
     * 安装utf7输入法
     */
    public static void installUTF7() {
        if (!DeviceUtils.isAppInstalled(UTF7_PKG)) {
            //拷贝apk到指定目录
            String path = ConfigData.rootPath;
            String fileName = PathData.utfApkName;
            File apkFile = new File(path + fileName);
            if (!apkFile.exists()) {
                FileUtils.copyAssets(path, fileName);
            }
            //安装
            DeviceUtils.installApk(apkFile);
        }
    }

    /**
     * 切换将当前输入法,另启一个线程
     */
    public static void switchInputMethod(final InputMethod input) {
        Thread switchThread = new Thread(new Runnable() {
            @Override
            public void run() {
                String installCommand;
                switch (input) {
                    case UTF7:
                        if (!DeviceUtils.isAppInstalled(UTF7_PKG)) {
                            installUTF7();
                        }
                        installCommand = "settings put secure default_input_method " + UTF7_KEY;
                        TestReport.i("切换到输入法[utf7]");
                        break;
                    case ANDROID:
                        installCommand = "settings put secure default_input_method " + Android_KEY;
                        TestReport.i("切换到输入法[Android]");
                        break;
                    default:
                        installCommand = "settings put secure default_input_method " + Android_KEY;
                        break;
                }

                ShellUtils.execCommand(installCommand, false);//这里你也可以使用Runtime.getRunteim的方法去执行
            }
        });
        switchThread.start();
    }

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,131评论 25 709
  • 第一次画水彩画,从网上扒的教程,但总是控制不好水量,总之问题多多。不过以后慢慢改进哒!
    思绪_715阅读 2,166评论 2 4
  • 你叽叽叽叽图咯了手机记录ill把他玩咯toll哦JJKKK巨魔lollKKK哦馊主意计策继续聚集在来咯匿名无图pu...
    乡亲直供海洋阅读 3,321评论 1 2
  • 1、什么是一万小时天才理论 一万小时理论是一种关于成为大师、天才的演绎推理,书中用大量的事实证明了,想成为大师级的...
    奔跑的汤盆儿阅读 2,738评论 0 1
  • 凡人歌 - 李宗盛 你我皆凡人 生在人世间 终日奔波苦 一刻不得闲 既然不是仙 难免有杂念 道义放两旁 利字摆中间...
    十年一井阅读 3,738评论 0 0

友情链接更多精彩内容