android切換輸入法工具類
共享一個切換輸入法的工具類梧却,可以實現(xiàn)以下功能
- 檢測輸入法是否安裝
- 安裝輸入法
- 切換輸入法(在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);
}
}
/**
* 切換將當(dāng)前輸入法,另啟一個線程
*/
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的方法去執(zhí)行
}
});
switchThread.start();
}
}