android百度输入法表情符号,分析Android 搜狗输入法在微信和QQ中发送图片和表情...
好记性不如烂笔头。生活中多做笔记,不仅可以方便自己,还可以方便他人。
背景
有没有发现,有时候表情或图片的交流更能让气氛更愉悦。斗图,成了群里的日常小事,然而,当你没有图可斗的时候就尴尬了。最近,搜狗输入法提供了非常强大的各种斗图大全,这可不得了了,只要输入法你希望表达的意思的文字,就能搜到到相应意思的表情,这功能非常有意思。
最近,老大要我研究一下搜狗输入法是如何直接在微信和QQ上发图片和表情的。作为“”开发汪”,面对新的东西,内心是“”鸡冻”澎湃的,立马拍拍胸口“包在我身上”。
正文
1. 微信
二话不说,我先是google,百度了一番,结果什么有用的相关信息都没找到,因为输入法开发本来就非常少。于是开始猜测是通过微信SDK分享的,查阅了开发文档,确实,微信有分享图片和表情包的SDK。于是,我注册了一个开发者账号,等了几天,终于审核通过了。
然鹅,通过微信SDK分享的途径,虽然能分享,但是都必须跳转到选择好友界面,而不是直接在好友界面发送图片或表情。于是,我继续查阅,看看能否有方法绕过微信的SDK分享,然后,在CSDN上找到了这个:
//分享图片给朋友(不用微信sdk)
private void shareToFriend(Uri u){
Intent intent = new Intent();
ComponentName comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
intent.setComponent(comp);
intent.setAction(Intent.ACTION_SEND);
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, u);
startActivity(intent);
}
没错,通过这种方法,确实可以绕过微信的SDK,但是这种方法还是会跳转到选择好友界面。没办法,只好去反编译搜狗输入法apk来看看了。
从搜狗输入法在非微信界面分享图片的途径来看,应该是使用了微信的SDK分享的,于是反编译搜狗输入法后,通过关键字 WXEmojiobject 搜索,发现了下面:
image.png
结合上面代码截图来分析一下。通过代码上的注释 “。。。=====commit git expression in weixin =====。。。”,我可以肯定,我找到发送图片和表情的代码了。从代码的后半部分“ImediaObject wXEmojiObject。。。。。”来看,后半部分应该是在非微信界面的分享,使用的是微信的SDK。还有从前面的微信的包名: com.tencent.mm 也可以看出来 if 条件里面的就是微信聊天界面分享表情的代码,通过“IS_CHAT_EDITOR”可以判断是否是微信聊天界面,这个应该是跟微信约定好的。
好了,我们再来分析一下,从if里面内容来看,这里最终做了一个操作 a2.commitText(charSequence, 1) ,这个操作就是输入法用来提交文字的,也就是说搜狗输入法把一串文字提交到输入框,然后就发送了图片或表情。什么鬼?输入一串文字就能发送图片了?
还有一个细节,我确实忽略了。在我们发送表情或图片时,微信的编辑框上会闪现一串文字,没错,正是搜狗输入法提交到编辑框的那串文字。因为是闪现的,所以我们看不清,不以为然,我录屏截图看看:
image.png
恍然大悟,原来搜狗输入法这是把表情或图片的路径提交到编辑框,然后微信的编辑框自动就会帮你识别该图片。不信的话,可以试试在手机根目录下放一张图片,把路径粘贴到微信的聊天编辑框,它会马上识别到图片,然后让你点击确定发送的。
原来最强大的是微信的编辑框,可以识别文字路径下的图片。好了,真想大白了,如果你做的是输入法开发,那你也可以这样直接发表情和图片了。
搜狗输入法的表情包分为本地的和在线的,本地的可以通过发送路径,那在线的呢?这还不简单,把在线的下载到本地不就行了吗,表情非常小,所以下载也很快。我顺便发一下搜狗输入法的表情包保存位置吧:
1. 搜狗输入法本地表情包存放在"/storage/emulated/0/sogou/.expression/ ".
2. 网络表情包下载并保存到"/storage/emulated/0/Android/data/com.sohu.inputmethod.sogou/files/flx/net_images/ ".
目前是这样,不知道将来会不会改,你可以到这里面去看,里面保存了很多表情。
2. QQ
如法炮制,我也按照微信的套路,找找QQ聊天界面搜狗输入法是如何直接发送图片和表情的,在反编译的代码中,我也找到了相应的方法:
image.png
从代码上可以确定,代码我是找对了。
那我来分析一下吧。从代码主体上看,主要做了一件事,搜狗输入法向编辑框发送了一条私有命令 a2.performPrivateCommand("com.sogou,inputmethod.expression", bundle2); 其中的performPrivateCommand方法是InputConnection类的一个方法,是输入法用于向所连接的编辑框发送私有命令。发送的命令里面携带了一个bundle,bundle里面携带了图片或表情的路径,相应的key是“SOUGOU_EXP_PATH”。
所以,很显然,这是搜狗输入法跟QQ约定好的一个操作。我简单的尝试了一下,也通过发送这条命令,但是没有成功,那就不知道QQ里都干啥了。
结尾
好了,写到这里也差不多完了。东西虽然挺简单的,但还是写了出来,毕竟这也是自己的一次探索经历,毕竟,我是把这当笔记来写了。如有不服,欢迎来“搞”!哈哈哈!
android百度输入法表情符号,分析Android 搜狗输入法在微信和QQ中发送图片和表情...相关推荐
- 分析Android 搜狗输入法在微信和QQ中发送图片和表情
好记性不如烂笔头.生活中多做笔记,不仅可以方便自己,还可以方便他人. 背景 有没有发现,有时候表情或图片的交流更能让气氛更愉悦.斗图,成了群里的日常小事,然而,当你没有图可斗的时候就尴尬了.最近,搜狗 ...
- android百度输入法源码,Android内置第三方输入法
Android内置第三方输入法 本篇讲诉如何再安卓源码中内置第三方输入法,并设为默认输入法启动,以及过程中可能引起的一些其他系统Bug处理: 内置输入法关联源码 各第三方输入法ID 以讯飞为例内置方法 ...
- android百度输入法源码,Android系统预置百度输入法
文档说明 本文档以SC806-CN-00为例(msm8909平台,Android 5.1),说明如何预置百度输入法APK,且设置为系统默认输入法. 预置百度输入法APK 先去百度网站下载一个百度输入法 ...
- 百度输入法键盘android,百度输入法Android 1.2.0正式版 支持智能手写
百度手机输入法前身为点讯梅花手机输入法.这是目前智能手机用户最熟悉及喜爱的输入法之一,独有触摸屏点划结合专利技术等交互设计专利,加上基于每日数亿计搜索请求挑选的百度精准词库,极大提高输入法综合输入效率 ...
- 输入法pad版android,百度输入法pad版 for android 3.0
在手机或者pad上,我喜欢九宫格类型的输入法.有年轻人手指灵活,脑子 也灵活,选用五笔字型,这不在话题之内. 手机从模拟式过渡到数字式后,中文输入就一直流行九宫格类输入法.利用数字键,经过特别的编码, ...
- android 百度输入法,Android系统预置百度输入法
文档说明 本文档以SC806-CN-00为例(msm8909平台,Android 5.1),说明如何预置百度输入法APK,且设置为系统默认输入法. 预置百度输入法APK 先去百度网站下载一个百度输入法 ...
- android百度输入法源码,百度输入法V1.1.0.19 For Android发布
[IT168 资讯]"享受流畅的手机输入体验"是百度手机输入法一直以来贯彻的产品理念,此次专门针对Android手机的触屏操作特点,结合百度手机输入法自身产品"超强词库. ...
- android输入法框架分析,Android与iOS输入法开发框架比较谈
对于任何一个使用手机的人,有一样工具是不可能缺少的,它既不是微信之类的社交工具,也不是支付宝之类的金融工具(事实上这两个都越界了),而是输入法这样的输入工具.更重要的是,输入法还是一种特权工具,因为它 ...
- 输入法pad版android,百度输入法PAD版(Pad版)
百度输入法PAD版本,不仅延续了百度手机输入法强大的功能,同时根据平板的特点,全新设计,让你在平板上有快速流畅的输入体验.2.1版本增加云输入功能,能高效的解决在平板上生僻词.流行词.专业词汇量不够的 ...
最新文章
- 阿里飞猪搜索技术的应用与创新
- Hinton:我终于想明白大脑怎么工作了!神经学家花三十年,寻找反向传播的生物机制...
- linux 内核头文件 linux kernel header
- 程序员的进化(目前还看不懂)
- Linux文件系统基础(1)
- 8_less中的内置函数
- nginx ---- 配置成系统服务
- Linux基础-1使用命令帮助
- 【Linux】部署memcache
- es6 babel编译
- ikbc poker2
- 转基因大米非法流入内地转基因大米非法流入内地:基因战争?粮食安全?
- 开不开心,都要让自己开心
- 浏览器端可以直接运行Python了
- Win7获KB4493132更新
- 数字经济2.0—趋势、逻辑、选择
- 小程序毕业设计 基于微信美食介绍点评小程序毕业设计开题报告功能参考
- 学习武汉Java开发后就一定能找到高薪工作吗?
- 2022最新Android面试题目解答,Android MVP模式详解
- PR片头模板 漫威超级英雄电影开场片头特效PR模板
热门文章
- 牛逼!Python的判断、循环和各种表达式(长文系列第2篇
- 一个牛逼的coder是这样诞生的。
- Python的小整数对象池
- 在EditPlus中配置PHP调试
- PRML-系列一之1.2
- python 32位软件下载安装_Python32位官方下载-Python(开发环境工具)v3.9.1 x32 官方win版-ucbug软件站...
- leetcode —— 面试题 04.03. 特定深度节点链表
- Servlet文件下载模板
- 10815 - Andy's First Dictionary
- Linux学习笔记14