一、申请你的AppIDandroid
请到开发者应用界面进行登记,登记选择移动应用设置后,将该应用提交审核,只有审核经过的应用才能进行开发。json
二、下载微信终端开发工具包api
开发工具包主要包含3部份内容:(其中,只有libammsdk.jar是必须的)微信
请前往如下下载最新SDK包网络
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN
注意:App的测试版和打包签名后的版本的微信签名是不一样的,须要特别注意。微信开发
三、搭建开发环境app
将下载好的libammsdk.jar放入工程的libs目录下,而后右键Build Path -> Add To Build Pathide
1) 设置须要的权限工具
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
四、使用开发工具包开发工具
1) 注册到微信
在按照微信指定的Activity中的onCreate()方法中初始化APPID并注册。
api = WXAPIFactory.createWXAPI(this, APP_ID, true); api.registerApp(APP_ID);
2) 发送请求或响应到微信
如今,你的程序要发送请求或发送响应到微信终端,能够经过IWXAPI的 sendReq 和 sendResp 两个方法来实现。
sendReq实例使用:
SendMessageToWX.Req的scene成员,若是scene填WXSceneSession,那么消息会发送至微信的会话内。
若是scene填WXSceneTimeline(微信4.2以上支持,若是须要检查微信版本支持API的状况,可调用IWXAPI的getWXAppSupportAPI方法,
0x21020001及以上支持发送朋友圈),那么消息会发送至朋友圈。scene默认值为WXSceneSession。
sendResp实例使用:
具体要发送的内容由第三方app开发者定义,具体可参考微信开发工具包中的SDK Sample Demo源码。
3) 接收微信请求及返回值
a) 在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity
b) 在清单文件中给该Activity配置exported属性
<activity android:name="com.hll.phoneserver.wxapi.WXEntryActivity" android:label="@string/app_name" android:exported="true" android:launchMode="singleTop" android:screenOrientation="portrait"> </activity>
c) 实现IWXPIEEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法
private void registAppID() { api = WXAPIFactory.createWXAPI(this, APP_ID, true); api.registerApp(APP_ID); api.handleIntent(getIntent(), new IWXAPIEventHandler() { // 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法 @Override public void onResp(BaseResp resp) { String result = null; SendAuth.Resp re = (Resp) resp; String code = re.code; switch (resp.errCode) { case BaseResp.ErrCode.ERR_OK:// 0:用户赞成 result = "受权成功"; getOpenID(code); Toast.makeText(WXEntryActivity.this, result, Toast.LENGTH_SHORT).show(); break; case BaseResp.ErrCode.ERR_AUTH_DENIED:// -4:用户拒绝受权 result = "拒绝受权,受权失败"; break; case BaseResp.ErrCode.ERR_USER_CANCEL:// -2:用户取消 result = "取消受权,受权失败"; break; default: result = "未知错误,受权失败"; break; } Toast.makeText(WXEntryActivity.this, result, Toast.LENGTH_SHORT).show(); } @Override public void onReq(BaseReq req) { } }); }
使用该Jar包在混淆的时候,须要作以下配置:
-keep class com.tencent.mm.sdk.** { *; }
微信分享及收藏是指第三方App经过接入该功能,让用户能够从App分享文字、图片、音乐、视频、网页至微信好友会话、朋友圈或添加到微信收藏。
微信分享及收藏功能已向全体开发者开放,开发者在微信开放平台账号下申请App并经过审核后,便可得到微信分享及收藏权限。
微信分享及收藏目前支持文字、图片、音乐、视频、网页共五种类型。开发者在App中在集成微信SDK后,可调用接口实现,
如下依次是文字分享、图片分享、音乐分享、视频分享、网站分享的示例
分享或收藏的目标场景,经过修改scene场景值实现。
一、文字类型分享示例
二、图片类型分享示例
三、音乐类型分享示例
注意:分享至微信的音乐,直接点击好友会话或朋友圈下的分享内容会跳转至第三方 APP,
点击会话列表顶部的音乐分享内容将跳转至微信原生音乐播放器播放。
四、视频类型分享示例
五、网页类型分享示例
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list &t=resource/res_list&verify=1&id=open1419317851&token=&lang=zh_CN
获取昵称
/**回收宝工程师App向微信请求获取昵称*/ public void requestNickName(String acessToken, String openId){ if (mProgressDialog == null) { mProgressDialog = CustomProgressDialog.createDialog(this); mProgressDialog.setCancelable(false); } mProgressDialog.show(); String url = Constant.WEICHAT_GET_NICKNAME + "access_token=" + acessToken + "&openid=" + openId; HttpUtils httpUtils = new HttpUtils(); httpUtils.configCurrentHttpCacheExpiry(1000 * 10); httpUtils.send(HttpMethod.GET, url, null, new RequestCallBack<String>() { @Override public void onFailure(HttpException arg0, String arg1) { if (mProgressDialog != null) { mProgressDialog.dismiss(); mProgressDialog = null; } Toast.makeText(WXEntryActivity.this,"链接超时,网络不给力啊!", Toast.LENGTH_LONG).show(); } @Override public void onSuccess(ResponseInfo<String> arg0) { if (mProgressDialog != null) { mProgressDialog.dismiss(); mProgressDialog = null; } try { JSONObject json = new JSONObject(arg0.result); String nickName = json.getString("nickname"); mTvNickName.setText(nickName); SharedPreferencesUtils.put(WXEntryActivity.this, Constant.WEIXINNICKNAME, nickName); } catch (JSONException e) { e.printStackTrace(); } } }); }
##############################################################