怎么利用微信“微博第三方软件应用”在聊天界面添加QQ音乐

微信封杀音乐应用,搬起石头砸了自己的脚-钛媒体官方网站
微信封杀音乐应用,搬起石头砸了自己的脚
分享到微信朋友圈Android 第三方应用接入微信平台研究情况分享
微信平台开放后倒是挺火的,许多第三方应用都想试下接入微信这个平台,毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的 最近由于实习需要也在研究这个东西,这里把我的整个研究情况给出来
微信平台开放后倒是挺火的,许多第三方应用都想试下接入微信这个平台,毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方面的开销,我最近由于实习需要也在研究这个东西,不过发现网上的相关资料还是挺少的,这里把我的整个研究情况给出来,希望可以共同学习。
一、微信SDK中会用到主要类的类图
上面这张类图中显示的是与微信通信过程中的请求类和响应类,第三方应用通过他们
附带的message字段来携带消息传输给微信进程。其中BaseResp有个内部类是ErrCode,
它里面定义了几个常量字段,当我们向微信发送请求后它会作为返回字段
返回到我们的应用中来,我们可以根据这个做相应的处理,在后面的时序图中将会提
到。接下来就是SDK中的message对象了。
上面这个类图主要是消息对象,里面有一个字段来引用媒体对象,这些媒体对象就
是我们所能传给微信的对象。有了消息对象和媒体对象,接下来要给出的就是将消
息对象送出去的通信类了。
上面的IWXAPI就是所说的通信类,所有与微信进行通信的工作都是他在做,而他的
生成是由下面的工厂类来完成。旁边的IWXAPIEventHandler接口是需要第三方应用
来实现的,如果我们想处理微信的请求信息或是我们向他发请求后他返回的标识字段。
二、第三方应用与微信通信的时序图
1、向微信发送消息
应用只需要进行一次注册就行了,然后在以后的使用中只需要封装消息,让通信类
发送即可。从前面的类图中可以看到,封装消息的顺序是首先生成需要发送的媒体
对象,然后将媒体对象附加到消息对象中,接着建立请求对象,最后使用通信类发
送即可。代码如下所示:
下面给出几张效果图:
程序进入后
注册后载点击发送,微信给出好友列表
选择一个好友,出现附加的消息编辑界面,可不填任何东西
点击share,可返回第三方应用,同时在好友微信中会收到所发消息
这里补充一点就是图中的框框就是微信自己定义的消息对象显示外表,非第三方应用定义,与上一张图对比即可知道。
暂时这个就说到这,好像这个博客一篇扛不住那么多东西啊,剩下的在后面的文章中给出,谢谢。
因为我自己写的demo都在实习结束后丢失了,所以给一个官方的demo下载,如果有不清楚的可以交流,谢谢合作,希望共同学习。
二、第三方应用与微信通信的时序图
2、接收微信的请求信息
前面四步和之前的&1、向微信发送消息&是一样的,不需要重复执行,这里给出来只是为了
流程的整体性。当我们注册后,应用图标会出现在微信聊天的列表中,点击加号即可去添加,
添加后,如果聊天时点击应用图标将会回调第三方应用,如上面时序图所示。这里补充一点,
当我们向微信发消息的媒体类型是appdata类型,即WXAppExtendObject对象时,好友在
收到消息时点击消息,会出现类似的回调过程,需要修改的就是此时onReq被调用时,type
为MAND_SHOWMESSAGE_FROM_WX而不是MAND_GETMESSAGE_FROM_WX 。
当我们在onReq方法中接到MAND_GETMESSAGE_FROM_WX
类型的消息时,如果想要把响应发回微信,可用如下代码段来实现
可以发现响应的消息对象和发请求是一样的,下面看看效果图
这是聊天窗口,前提是你已经点击加号将应用添加到下面的列表中
此时,如果点击第三方应用,会回调我们设置好的界面
这个界面是自己定义的,你可以在接到微信的请求后自定义响应界面。
说了半天,还没说到onReq方法或是前面讲的onResp方法的由来,
也就是说如果我们想要处理给微信发请求后的回馈或是响应微信的请求
应该怎么做,我们需要下面3步操作:
a. 可以在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个
WXEntryActivity类,该类继承自Activity(当然这个路径是自定义的,随便你自己)
并在manifest文件里面加上exported属性,设置为true,例如:
&activity&
android:name=&.wxapi.WXEntryActivity&&
android:exported=&true&&
android:label=&@string/app_name&&
android:launchMode=&singleTop& &
b. 实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送
到微信请求的响应结果将回调到onResp方法
终于出现了这两个神奇的方法,可以看看他们的大致用法
&SPAN style=&FONT-SIZE: 18 FONT-FAMILY: Microsoft YaHei&& @Override&
public void onReq(BaseReq req) {&
switch (req.getType()) {&
MAND_GETMESSAGE_FROM_WX:&
goToGetMsg();&
MAND_SHOWMESSAGE_FROM_WX:&
goToShowMsg((ShowMessageFromWX.Req) req);&
&SPAN style=&FONT-SIZE: 18 FONT-FAMILY: Microsoft YaHei&& @Override&
public void onResp(BaseResp resp) {&
int result = 0;&
switch (resp.errCode) {&
case BaseResp.ErrCode.ERR_OK:&
result = R.string.errcode_&
case BaseResp.ErrCode.ERR_USER_CANCEL:&
result = R.string.errcode_&
case BaseResp.ErrCode.ERR_AUTH_DENIED:&
result = R.string.errcode_&
result = R.string.errcode_&
Toast.makeText(this, result, Toast.LENGTH_LONG).show();&
c. 在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对
象传递给IWXAPI接口的handleIntent方法:
api.handleIntent(intent, this);&
ok,这三步可以结合时序图一起来理解,都可以一一对应的。
最后给出一些注意点,也是容易混淆的,我都写过Demo验证过了,如果大家觉得有不对的,欢迎指出,欢迎讨论
1、注册是本地注册,且只需要注册一次,但是在发送的时候微信服务器会检测第三方应用的合法性
2、说白了就是在本地第三方应用将要发送的内容先发给微信进程,微信进程收到后再将消息发给自己的微信好友
3、卸载或者反注册后,第三方应用将不会出现在本机微信的可添加应用列表中
4、使用微信开放平台发送的媒体对象中,网页,音频和视频只能是网络URL,图片可发送本地路径,本地字节数据,网络URL,文件可以发送本地字节数据和本地路径,附带在媒体对象中的字节数组,微信默认会是点击则给出界面,下载后存储的路径是在/sdcard/Tecent/MicroMsg/本机微信帐号(一般是一串字母数字的组合体)/attachment文件夹下,这个路径不需要自己去记录,微信会在媒体对象的filepath字段中记录,此时一定注意的是当你响应微信的show请求时,媒体对象中的filedata字段是为空的,即使你在发送的时候附带在了这个字段中,如前面所说,只能用filepath这个字段。
如果要自行处理只能是appdata类型数据,理由下面给出:
appdata类型的对象唯一特殊点就只是告诉微信这个消息点击时需要调用第三方应用,而其他类型的媒体对象被点击时所显示的是微信的默认页面
5、微信根据transaction字段决定消息在聊天框中的表现以及点击后的响应,只有appdata被点击时可以调用第三方应用的进程,所触发的方法是实现了IWXAPIEventHandler接口的类的onReq方法,类型是MAND_SHOWMESSAGE_FROM_WX而在微信中和好友聊天时点击第三方应用图标所所触发的方法是实现了IWXAPIEventHandler接口的类的onReq方法,类型是MAND_GETMESSAGE_FROM_WX
6、微信会根据第三方应用是否注册来给出应用安装的信息,比如传给微信好友一个音频消息时,当好友点击那个消息,微信会以一个WebView来load音频消息中的URL,不过在此前会在URL后面附加一些微信定义的信息,其中就会包括一个字段是isInstalled有关微信包装后的URL的具体格式,我们可以将网络断开,然后再去点击,这时自然就出现了那个经典界面,你也就可以看到URL的真面目了因为我自己写的demo都在实习结束后丢失了,所以给一个官方的demo下载,如果有不清楚的可以交流
谢谢合作,希望共同学习。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'经验883 米
在线时间4 小时
版本6.6.17
积分 889, 距离下一级还需 1111 积分
积分 889, 距离下一级还需 1111 积分
机型小米手机2/2S
签到次数65
MIUI版本6.6.17
小米手机4 CDMA-4G
当一首歌结束或者切歌的时候音量从零自动增加到自己选择的音量,
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
Copyright (C) 2016 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号最新公告:微信圈-最具人气的微信公众平台导航网站正式开通,快速审核请加QQ群:
当前位置: >
  一、Android第三方应用接入微信开放平台的注意事项:
  1. 到微信开放平台官网申请正式的AppID(需通过审核),要填写包名、app签名的md5值。至于如何获取app签名信息,官方提供签名包apk
  (http://open./download/sdk/gen_signature.apk)
  2. 如果只是测试或debug,可以用临时AppID(到官网申请但不需要通过审核)。
  二、如何运行SDK Demo?(&分享到好友&之后没反应)自己的App呢?
  1. Eclipse打开Window-&Preferences,在弹出的对话框中,选择Android目录下的Build,指定Custom debugkeystore选项的路径为sdk demo工程目录中的debug.keystore文件。
  2. 在自己的App里,记得把debugkeystore改回来(改成当前用户目录)。并且,debug和正式App的AppID记得切换。
  三、如何App中实现微信分享?
  1. 申请AppID。
  2. 下载微信sdk库:libammsdk.jar。
  3. 将jar放入app\libs\。
  4. 代码中:createWXAPI和registerApp来注册到微信,isWXAppInstalled和isWXAppSupportAPI来判断微信客户端是否安装及安装的版本是否支持微信开放平台,isTimeLineSupportedVersion用于判断微信是否支持朋友圈。
  四、如何让我们的App接收到微信的反馈?
  1. 在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,并在manifest文件里面加上exported属性,设置为true。
  2. 实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法。
  3. 在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。
  五、其他注意事项:
  1. 是不是必须在WXEntryActivity里发送sendReq及WXEntryActivity必须被调用?
  WXEntryActivity可以不被调用,在sendReq后微信有响应就会到WXEntryActivity的onReq,所以一般onReq里Toast发送结果后需要finish(),这样直接返回到发送sendReq的UI(用户感觉不到有WXEntryActivity的存在)。
  2. 如何发送到好友与朋友圈?
  a. 发送到好友:SendMessageToWX.Req的scene成员,填WXSceneSession。
  b. 发送到朋友圈:SendMessageToWX.Req的scene成员,填WXSceneTimeline(微信4.2以上支持,如果需要检查微信版本支持API的情况, 可调用IWXAPI的getWXAppSupportAPI方法,0x及以上支持发送朋友圈),那么消息会发送至朋友圈。
  c. scene默认值为WXSceneSession。
  3. 如何发送图片同时显示title及description?
  SDK分享信息发送WXMediaMessage中包含WXImageObject,发送后没有显示title和description,这是由于微信客户端对话框中对图片只会呈现其缩略图,标题和描述文字会自动忽略。
  替代办法:
  a. 对于分享到好友:以WXFileObject代替WXImageObject,在发送之前截图保存到sdcard,然后发送时设置setFilePath,这样在微信接收方点击缩略图后会提示是否接收文件并显示。
  b. 对于分享到朋友圈:由于朋友圈不支持文件传输,只能发送WXImageObject,title及description无法显示。
------------------------------------------
不会海淘?想要购买国外正品原装宝贝?那就登陆&,查看各国海淘攻略教程,了解海淘优惠折扣最新信息,从此海淘就这么简单!
关注微信:haitao91lai&或扫描下方二维码关注【就要来海淘】了解更多海淘相关信息。
相关热点:
大家都在关注
深圳市微赢宝网络科技有限公司 是一个提供微信拓展应用开发及微信营销行业解决方案的技术研发型公司。 我们专注于...…
新媒体大平台,推出运营、培训、推广服务全方位的互联模式…
优生活[ Www Ushenghuo Net ] - 您的优质生活顾问,是大家的生活小贴士。主要为大家提供生活、娱乐、学习中总...…
职场有风险,跳槽需谨慎 网蓝人才是基于微信平台搭建的中国第一款专注于日语人材求职领域的有态度的日语人才中介公...…
跳槽选哪家?你说了算。跳哪,帮助你关注感兴趣公司的最新招聘,第一时间获取优秀的工作机会。…
互联网岗位实时搜索,支持腾讯百度阿里网易新浪等多家互联网公司岗位搜索,以及内部岗位推荐&&…
国内最大最专业的高端人才招聘网站猎聘网为您打造,订阅职位后每天晚上接收高薪职位推送。 & 8203;可主动搜索职位...…
全国天气预报,即时获取最新的天气情况,微信里最好的天气预报。排名第一。…
微信描述: 每日天气官方微信,发送省份城市名字获取天气预报,方便你的日常出行,更有天气相关的美图及生活常识。…
数学中国是最专业的数学与数学建模实践学习基地,服务于数学建模爱好者、算法爱好者、数学软件爱好者、中小学数学爱...…
性化辅导专家,让你每一分钟都花在学习上,彻底解决学习问题。…
探讨幼教规律,分享办园经验,寻找合作机会,共同探索园所成长共赢新模式,不断提高幼儿园经营管理水平,打造幼儿园...…
这里汇聚全网最经典独特、搞笑、内涵图文和心情美文,心情不好时要看,心情好时更要看,每天带给你无限乐趣,从此碎...…
电影世界:看的电影比吃的饭还多,看的电影比走的路还长。每天奉上优秀电影推荐及经典电影点评~~~戏如人生~人生如戏~~~…怎么利用微信“第三方应用”在聊天界面添加QQ音乐_百度知道
怎么利用微信“第三方应用”在聊天界面添加QQ音乐
提问者采纳
ffsdsfssdgdhyj
提问者评价
其他类似问题
为您推荐:
您可能关注的推广
qq音乐的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 微博第三方软件 的文章

 

随机推荐