安卓11之上的搜索框,的操作
对于输入法的操作,每个脚本作者都逃不过去的一个坎,对于不同APP上的搜索框,亦或者是各种消息发送框...咳咳~都需要用到输入法上的操作, 搜索和发送两个按钮, 其实触发的都是回车按钮,但是如果直接使用脚本发送KeyCode码,也不会触发这个回车按钮.所以只能使用第三方输入法来实现,目前已知的可用脚本输入法,有萌歆制作的一个叫脚本输入法的app, 和 无名小姐魔改的百度输入法,这两个输入法,都在应用内,添加了一个静态的事件监听,从而使外部的APP发送一条广播来触发输入法上的按钮功能.
百度输入法修改后,有几十兆大小. 而萌歆的脚本输入法js搜索框代码,只有一两兆大小,所以,如果你像我这种,不太喜欢用百度产品的人,肯定是会选择多安装一种输入法来备用,对于安卓11之上的系统用户来说, autojsPro提供了一个方法来快速切换当前手机上的输入法.那么对低于安卓11的手机来说,就不是那么简单了, 因为没有足够的权限,来切换输入法了~
不过我们可以使用adb去给app授予系统权限,注意,这里的授予权限并不是一次性的,而是授予后,只要你没有卸载或者清除APP所有的数据js搜索框代码,那么这个权限是永久存在的,即便是你重启了手机,也无所谓.所以我比较推荐使用这种方式.
那么你可以通过下面这条命令,在电脑上对手机上的autojs进行授权.
<pre class="code-snippet__js" data-lang="css">adb shell pm grant org.autojs.autojspro [android][10].permission.WRITE_SECURE_SETTINGS
</pre>
adb shell pm grant后面跟的是你要授权APP的包名,然后后面的是要授予的权限.
当你授权完毕后, 就可以使用AutojsPro自身来切换已经安装的输入法了.那么具体的方法:
<pre class="code-snippet__js" data-lang="javascript">importClass( "android.content.Context" );
`// 要切换输入法的包名/服务的类名, 如果服务类名中包含包名那么包名可以替换成 . 来代替// 例如 com.sohu.inputmethod.sogou.xiaomi/com.sohu.inputmethod.sogou.xiaomi.SogouIME
// 可以写成 com.sohu.inputmethod.sogou.xiaomi/.SogouIMElet NewInputMethodName = "com.sohu.inputmethod.sogou.xiaomi/.SogouIME";
let imm = context.getSystemService( Context.INPUT_METHOD_SERVICE );`imm.setInputMethod( null, NewInputMethodName );
</pre>
下面的代码可以获取到当前手机已安装输入法的包名和服务类名:
<pre class="code-snippet__js" data-lang="javascript">//注意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 );
</pre>
<pre class="code-snippet__js" data-lang="css">imm.setInputMethod(IBinder token, NewInputMethodName);
</pre>
最后,对于代码中的这一句代码来说,有人说必须有token传入,才可以切换输入法,但是我在我的平板上使用切换输入法时,直接传入的null,也可以成功的切换输入法,这里的token代表的是什么,我没有再往深处研究,如果你们传入null后,无法切换输入法,那再探讨一下这个token的作用吧.
另外还有一种弹窗切换的方式可供选择, 这种方式不需要有系统权限即可实现.
<pre class="code-snippet__js" data-lang="css">imm.showInputMethodPicker();
</pre>
时间不早了,早点睡吧
~祝大家新年快乐...
发表评论
热门文章
Spimes主题专为博客、自媒体、资讯类的网站设计....
一款个人简历主题,可以简单搭建一下,具体也比较简单....
仿制主题,Typecho博客主题,昼夜双版设计,可....
用于作品展示、资源下载,行业垂直性网站、个人博客,....
尘集杂货铺和官网1t5-cn
11月11日
[已回复]
希望主题和播放器能支持SQLite数据库,AI能多个讯飞星火