0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

安卓11之下的系统实现输入法切换

汽车电子技术 来源:安卓脚本 作者:稻草人 2023-03-03 10:20 次阅读

对于输入法的操作,每个脚本作者都逃不过去的一个坎,对于不同APP上的搜索框,亦或者是各种消息发送框...咳咳~都需要用到输入法上的操作, 搜索和发送两个按钮, 其实触发的都是回车按钮,但是如果直接使用脚本发送KeyCode码,也不会触发这个回车按钮.所以只能使用第三方输入法来实现,目前已知的可用脚本输入法,有萌歆制作的一个叫脚本输入法的app, 和 无名小姐魔改的百度输入法,这两个输入法,都在应用内,添加了一个静态的事件监听,从而使外部的APP发送一条广播来触发输入法上的按钮功能.

百度输入法修改后, 有几十兆大小. 而萌歆的脚本输入法,只有一两兆大小,所以,如果你像我这种,不太喜欢用百度产品的人, 肯定是会选择多安装一种输入法来备用,对于安卓11之上的系统用户来说, autojsPro提供了一个方法来快速切换当前手机上的输入法.那么对低于安卓11的手机来说,就不是那么简单了, 因为没有足够的权限,来切换输入法了~

不过我们可以使用adb去给app授予系统权限,注意,这里的授予权限并不是一次性的,而是 授予后,只要你没有卸载或者清除APP所有的数据,那么这个权限是永久存在的,即便是你重启了手机,也无所谓 .所以我比较推荐使用这种方式.

那么你可以通过下面这条命令,在电脑上对手机上的autojs进行授权.

adb shell pm grant org.autojs.autojspro android.permission.WRITE_SECURE_SETTINGS

adb shell pm grant 后面跟的是你要授权APP的包名,然后后面的是要授予的权限.

当你授权完毕后, 就可以使用AutojsPro自身来切换已经安装的输入法了.那么具体的方法:

importClass( "android.content.Context" );
// 要切换输入法的包名/服务的类名, 如果服务类名中包含包名那么包名可以替换成 . 来代替
// 例如 com.sohu.inputmethod.sogou.xiaomi/com.sohu.inputmethod.sogou.xiaomi.SogouIME
// 可以写成 com.sohu.inputmethod.sogou.xiaomi/.SogouIME
let NewInputMethodName = "com.sohu.inputmethod.sogou.xiaomi/.SogouIME";
let imm = context.getSystemService( Context.INPUT_METHOD_SERVICE );
imm.setInputMethod( null, NewInputMethodName );

下面的代码可以获取到当前手机已安装输入法的包名和服务类名:

//注意imm等同于上面的imm
let list = imm.getInputMethodList();
let inputMethodInfo = {};


for ( let i in list ) {
    let inputInfo = list.get(i);
    let inputPackageName = inputInfo.getPackageName();
    let inputServiceName = inputInfo.getServiceName();
    inputMethodInfo[ "input"+i ] = {};
    inputMethodInfo[ "input"+i ].packageName = inputPackageName;
    inputMethodInfo[ "input"+i ].serviceName = inputServiceName;
}
console.log( inputMethodInfo );

imm.setInputMethod(IBinder token, NewInputMethodName);

最后,对于代码中的这一句代码来说, 有人说必须有token传入,才可以切换输入法,但是我在我的平板上使用切换输入法时,直接传入的null,也可以成功的切换输入法,这里的token代表的是什么,我没有再往深处研究,如果你们传入null后,无法切换输入法,那再探讨一下这个token的作用吧.

另外还有一种弹窗切换的方式可供选择, 这种方式不需要有系统权限即可实现.

imm.showInputMethodPicker();
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 输入法
    +关注

    关注

    0

    文章

    48

    浏览量

    9583
  • APP
    APP
    +关注

    关注

    33

    文章

    1529

    浏览量

    71631
  • 脚本
    +关注

    关注

    1

    文章

    372

    浏览量

    14635
收藏 人收藏

    评论

    相关推荐

    C#中控制输入法

    其实,在seaman_X提供的链接中,已经对如何在WinForm中控制输入法作了相当详细地介绍了。针对您所关心的两个问题,即如何获取系统中所有的输入法,以及如何根据输入语言及其他特殊要
    发表于 12-29 11:12

    输入法安装不了

    我的电脑安装不了输入法(qq拼音,搜狗拼音)每次安装到快结束时都会死机,就只有按电源关机!但是可以安装GOOGLE输入法,现在想换输入法,请各位高手帮忙下,谢谢了360安全卫士已经对我的电脑进行了
    发表于 07-22 00:18

    中文输入法在B超系统中的应用

    中文输入法在B超系统中的应用本文对中文输入法在B超系统中的实现进行了介绍。 在计算机迅速发展和普及的今天,用计算机对汉字进行
    发表于 11-30 10:15

    启动项里没有输入法,我该如何添加输入法启动项

    有的时候因为文件破坏或者木马破坏,可能造成启动项里没有输入法启动项,这样在实用操作中,挺不方便的。切换输入法也看不到,挺麻烦的。现在教大家如何添加输入法启动项。首先,看看C:\WIND
    发表于 02-12 21:26

    输入法不能切换解决方法

    输入法不能切换解决方法输入法不能切换解决方法在输入法图标上右键(图一),设置(图二)。然后将默认输入
    发表于 04-24 10:25

    【NanoPi2试用体验】安装ibus拼音输入法和五笔输入法

    本帖最后由 可乐丸子 于 2015-12-26 11:30 编辑 官方的Debian镜像没有加入拼音输入法,有时搜索会用到中文就很麻烦,下面这个帖子会教大家如何安装拼音和五笔输入法。还是打开
    发表于 12-26 11:28

    Linux下安装搜狗输入法

    ]2im-config[/tr]这里是需要把fcitx选中,其他的不要选。[tr=none ]3fcitx-config-gtk3[/tr]注销帐号,或者重启系统然后设置fictx输入法设置完成即可。展示如下:
    发表于 05-03 14:15

    《Visual C# 2008程序设计经典案例设计与实现》---动态设置系统输入法

    《Visual C# 2008程序设计经典案例设计与实现》---动态设置系统输入法.zip
    发表于 06-25 16:44

    在Labview中如何控制输入法

    在写程序中遇到一个问题:如何在进入程序时将输入法更改为英文输入法,一般默认是中文输入法,当按下键时,输入法会跳出来,而程序则不会响应这个按键。所以想在进入程序时,将
    发表于 11-26 15:47

    Orange Pi 4开发板在Ubuntu系统下如何安装中文输入法

    。【图11】选择Chinese【图12】选择Sunpinyin,点击Add【图13】成功添加了SunPinyin输入法【图14】打开浏览器【图15】按住Ctrl键,再按空格键,切换到SunPinyin
    发表于 05-19 15:13

    win10系统怎么禁用输入法 两种禁用输入法的方法

    方法一:直接禁用输入法1、右击此电脑,选择管理。2、打开计算机管理,依次展开任务计划程序>>程序计划程序库>>micrsoft>>windwos。3、点击
    发表于 08-31 14:02

    请问android4.4.2如何内置第三方输入法系统中并设为默认输入法

    android4.4.2如何内置第三方输入法系统中并设为默认输入法系统自带的输入法拼音太不友好了,想改为第三方的,如何内置到
    发表于 01-11 07:31

    怎样将RK3326 Android 8.1的默认输入法改为讯飞输入法

    有几种方法可以去修改RK3326 Android 8.1的默认输入法呢?怎样将RK3326 Android 8.1的默认输入法改为讯飞输入法呢?
    发表于 02-17 06:54

    【PIMF】OpenHarmony啃论文俱乐部——OpenHarmony标准系统输入法以及中文拼音输入法原理

    11组PIMF的成员。【本期看点】老子到此一游系列之《老子的白日梦——基于OpenHarmony的中文拼音输入法》梗概本文主要内容包括以下两个方面:(1) OpenHarmony标准系统输入
    发表于 05-23 11:02

    xp输入法切换不了怎么办?

    xp输入法切换不了怎么办? 一般是杀毒ctfmon.exe文件给删除了。。 找一个这样的文件,重新放置到C:WINDOWSsystem32目
    发表于 05-28 10:19 2988次阅读