本文使用Android辅助功能AccessibilityService进行微信自动聊天demo是。
这是为了通过深入了解Android的辅助功能提高自己的动手能力。(约翰f肯尼迪,Northern Exposure)不要用于商业或非法用途。
开始之前的基本准备要求:
聊天机器人app demo,操作其他应用程序,自动化工作,需要知道的几个技能点;
1.熟练使用AccessibilityService、AccessibilityNodeInfo等一系列辅助类。
2.使用uiau查找控件id或文本。
首先,网络上应该有很多东西。你不明白可以去百度。或上一句:请参阅Android辅助功能[Accessibility]入门简介和使用。
其次,使用Android SDK中包含的uiau,该UIAU位于% Android SDK _ home% \ tools \ bin。双击以打开,如下图所示。
在这里可以学到很多有价值的东西:
APP软件包名称,packageName
当前控件之一的ID、resource-ID;
当前控件是否可以点击,clickable;
当前控件是否可以滑动,srollable
让我举一个例子。
有关在此处获取的控件id在代码中通过资源id的信息,请参阅以下代码:
public class auto chatservice extends accessibility service {
//AccessibilityEvent是一个事件类,它封装了表示各种事件(通知、窗口内容)的多个字段。
@Override
Public void onaccessibilityevent(可存取性事件事件){
string packagename=event . get packagename()。tostring();
string class name=event . get class name()。tostring();
徽标(“event from :”、package name、class name);
AccessibilityNodeInfo root=();
//首先,tabhost[微信、通讯录、发现、我],微信右上角是否有红色圆圈,是否有微信控件。
listaccessibilitynodeinfo wechatbadgelist=root . findaccessibilitynodeinfosbyviewid(' com .);
}
}要执行自动任务,您必须具有自动任务权限
在Xml文件中注册服务
服务(服务)
Android : name='“autochatservice”
Android:enabled=' true '
Android:exported=' true '
Android : label=' @ string/app _ name '
Android : permission=' Android。
Intent-filter
actionandroid : name=' Android . acce;/
/intent-filter
元数据-数据
Android : name=' Android . accessibility service '
Android : resource=' @ XML/accessibility _ service '/
/service在RES下创建新的XML包,并创建XML文件accessibility_service。
?嗯?Xml版本=' 1.0' encoding=' utf-8 '
Accessibility-service
xmlns : Android='
Android : accessibilityeventtypes=' typeallmask '
Android : accessibilityfeedbacktype=' feedbackallmask '
Android : accessibility flags=' flag default '
Android : canretrievewindowcontent=' true '
Android : description=' @ string/accessibility _ description '
Android : notification time out=' 3000 '
Android 3360 packagenames=' com=' com。
/现在,我假设你已经有了做辅助功能工作的充分基础。可以对接:等自动聊天API
腾讯云智能客服机器人地址:图灵API接口(收费。以前是免费的。)、地址:阿里云智能客服机器人地址:在这种情况下,使用图灵API接口。
Public class ChatRobot {
Public ChatRobot() {
}
public void feedwithturingapi(string text,c handler) {
//异步调用聊天Api接口;
async http client client=new async http client();
request params params=new request params();
(' key '' XXX ');
(' secret '' XXX ');
(‘信息’,文本);
client . post('params,new jsonhttpresponsehandler () {
public void on success(int status code,header [] headers,JSON object response) {
字串文字=空;
Try {
text=re(' text ');
} catch (Exception e) {}
(文本);
}
public void on failure(int status code,header [] headers,throwable throwable,JSON object error响应){
(“淘气”)文本“-我的replay' emoj。getemoji('微笑');
}
});
}
Public interface响应转换器{
//自动机返回内容
Void onFeedBack(字串msg):
}
}网络请求需要网络权限。
uses-permission Android : name=' Android。/
嗯,你已经收到聊天回复了。请使用AccesibilityNodeInfo的复制粘贴自动回复微信应用程序中的消息。
附上源demo下载地址,关注博客头条,用个人信件获取Demo项目!