[TOC]

Android接入指南接入说明:

任何需要调用企业微信API的应用,都需要先在企业微信管理后台创建一个应用,设置完成后,即可使用对应的功能。

创建应用管理员登录企业微信管理后台,选择企业应用

选择已有应用或添加应用,进入应用详情页面。

选择“企业微信授权登录”,在设置界面填写Android的 App的签名&包名,设置完成后系统自动生成应用程序schema。

企业微信分享的设置,复用企业微信授权登录的设置,设置以后登录、分享任何一个都可以使用。

下载企业微信终端开发工具包

wwapi.zip

每个第三方应用必须要导入该sdk库,用于实现与企业微信的通信

示例程序

搭建开发环境

在你需要使用企业微信终端API的文件中导入相应的类。

import com.tencent.wework.api.model.WWMediaText;

在代码中使用开发工具包

注册到企业微信

要使你的程序启动后企业微信终端能响应你的程序,必须在代码中向企业微信终端注册你的id。可以在程序入口Activity的onCreate回调函数处,或其他合适的地方将你的应用schema注册到企业微信。

private static final String APPID = "WW1e933be11645237c";
private static final String AGENTID = "1000012";
private static final String SCHEMA = "wwauth1e933be11645237c000012";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
stringId = getApplicationInfo().labelRes;
iwwapi = WWAPIFactory.createWWAPI(this);
iwwapi.registerApp(SCHEMA);
}

发送请求和接收返回值

现在,你的程序要发送请求到企业微信终端,可以通过IWWAPI的sendMessage方法来实现。

boolean sendMessage(BaseMessage msg);

sendMessage是第三方app主动发送消息给企业微信,发送完成之后会切回到第三方app界面。

boolean sendMessage(BaseMessage req, IWWAPIEventHandler callback)

带回调的sendMessage是第三方app向企业微信请求数据,企业微信回应数据之后会切回到第三方app界面。

sendMessage的实现示例,如下所示:

WWMediaText txt = new WWMediaText(((EditText) findViewById(R.id.et3)).getText().toString());
txt.appPkg = getPackageName();
txt.appName = getString(stringId);
txt.appId = APPID;
txt.agentId = AGENTID;
iwwapi.sendMessage(txt);
带回调的sendMessage的实现,如下所示:final WWAuthMessage.Req req = new WWAuthMessage.Req();
req.sch = SCHEMA;
req.appId = APPID;
req.agentId = AGENTID;
req.state = "dd";
iwwapi.sendMessage(req, new IWWAPIEventHandler() {
@Override
public void handleResp(BaseMessage resp) {
if (resp instanceof WWAuthMessage.Resp) {
WWAuthMessage.Resp rsp = (WWAuthMessage.Resp) resp;
if (rsp.errCode == WWAuthMessage.ERR_CANCEL) {
Toast.makeText(MainActivity.this, "登录取消", Toast.LENGTH_SHORT).show();
}else if (rsp.errCode == WWAuthMessage.ERR_FAIL) {
Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
} else if (rsp.errCode == WWAuthMessage.ERR_OK) {
Toast.makeText(MainActivity.this, "登录成功:" + rsp.code,
Toast.LENGTH_SHORT).show();
}
}
}
});

具体要发送的内容由第三方app开发者定义,具体可参考微信开发工具包中的SDK apitest源码。

注意

如果需要混淆代码,为了保证sdk的正常使用,需要在proguard.cfg加上下面两行配置:

-keep class com.tencent.wework.api.** {
*;
}

至此,你已经能使用企业微信Android开发工具包的API内容了。如果想更详细了解每个API函数的用法,请查阅 Android 平台参考手册 或自行下载阅读企业微信apitest源码。

分享功能接入

企业微信分享是指第三方App通过接入该功能,让用户可以从App分享文字、图片、文件、视频、网页至企业微信会话。

企业微信分享目前支持文字、图片、文件、视频、网页共五种类型。开发者在App中在集成企业微信SDK后,可调用接口实现,以下依次是文字分享、图片分享、文件分享、视频分享、网站分享的示例。

文字类型分享示例

WWMediaText txt = new WWMediaText(
((EditText) findViewById(R.id.et3)).getText().toString());
txt.appPkg = getPackageName();
txt.appName = getString(stringId);
txt.appId = APPID;
txt.agentId = AGENTID;
iwwapi.sendMessage(txt);

图片类型分享示例

WWMediaImage img = new WWMediaImage();
img.fileName = "test";
img.filePath = path;
img.appPkg = getPackageName();
img.appName = getString(stringId);
img.appId = APPID;
img.agentId = AGENTID;
iwwapi.sendMessage(img);
文件类型分享示例
WWMediaFile file = new WWMediaFile();
file.fileName = "test";
file.filePath = path;
file.appPkg = getPackageName();
file.appName = getString(stringId);
file.appId = APPID;
file.agentId = AGENTID;
iwwapi.sendMessage(file);
视频类型分享示例
WWMediaVideo video = new WWMediaVideo();
video.fileName = "test";
video.filePath = path;
video.appPkg = getPackageName();
video.appName = getString(stringId);
video.appId = APPID;
video.agentId = AGENTID;
iwwapi.sendMessage(video);
网页类型分享示例WWMediaLink link = new WWMediaLink();
link.thumbUrl = ((EditText) findViewById(R.id.et2)).getText().toString();
link.webpageUrl = ((EditText) findViewById(R.id.et1)).getText().toString();
link.title = ((EditText) findViewById(R.id.et3)).getText().toString();
link.description = ((EditText) findViewById(R.id.et4)).getText().toString();
link.appPkg = getPackageName();
link.appName = getString(stringId);
link.appId = APPID;
link.agentId = AGENTID;
iwwapi.sendMessage(link);