android版微信实名认证才能加群分享一定要审核通过才能分享吗?

2016年1月 总版技术专家分月排行榜第二2015年11月 总版技术专家分月排行榜第二2015年10月 总版技术专家分月排行榜第二
优秀小版主
本帖子已过去太久远了,不再提供回复功能。在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
应用签名什么的都弄的,在网上看有keystore也影响但不知道怎么改,现在第一次可以分享,再点就不可以了,不知道为什么,求高人
包名,签名开放平台上都写了
程序内容和文档一样
初次调试可以正常分享
如果再分享需要微信清除数据
否则点击没有反应
代码如下:
private static Context mC
private static ShareWeChatUtil mI
//IWXAPI是第三方应用和微信的openapi接口
private IWXAPI
private void regToWx(){
//通过WXAPIFactory工厂,获取IWAPI的实例
api = WXAPIFactory.createWXAPI(mContext,ShareConstants.WECHAT_APP_KEY,true);
//将应用的APPId注册到微信
api.registerApp(ShareConstants.WECHAT_APP_KEY);
public ShareWeChatUtil() {
regToWx();
public static ShareWeChatUtil getInstance(Context context) {
mContext =
if (mInstantce == null) {
mInstantce = new ShareWeChatUtil();
public void WeChatSendReq(String text ){
regToWx();
//初始化一个WXTextObject对象
WXTextObject textObj = new WXTextObject();
textObj.text =
//用WXTextObject对象初始化一个WXMediaMessage对象
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textO
msg.description =
//构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
//transaction字段用于唯一标示一个请求
req.transaction = String.valueOf(System.currentTimeMillis());
req.message =
//调用api接口发送数据到微信
api.sendReq(req);
在主程序中这样引用
ShareWeChatUtil.getInstance(mContext).WeChatSendReq("微信开放平台Test");
来源: 微信开放平台问答
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个问题官方微信中有解答,android端分享首先要通过审核才行
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这是因为应用没有通过审核。
包名和签名要和申请的时候填写的一样才可以,审核通过之后,再使用获得的AppID,才能正常分享。
签名跟打包apk生成的keystore有关,每次修改需要重新审核。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
楼上正解,今天弄微信支付就遇到这个问题,找了半天在官网上找到这个FAQ。分值不够,无法赞。
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
现在有个android应用,但是需要投放到不同渠道上。不同渠道对于包名有不同要求,例如九游以uc结尾,豌豆荚以wdj结尾。如果现在有n个渠道的包需要在应用内接入微信分享,请问是否需要申请n个不同的参数?
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:微信分享到朋友圈、发送给朋友开发注意事项
最近开发微信活动的时候,发现分享到朋友圈和发送给朋友功能不稳定,时而有效时而无效,打开debug模式查看,发现多数报的数签名错误,仔细看了官方文档,最终问题出在ticket的缓存上。
url: 需要根据不同的页面动态获取,url不能进行encodeURIComponent,否则验签会失败&url不能包括微信添加的#后边的部分,所以应该处理为:window.location.href.split('#')[0]&签名用的url必须是调用JS接口页面的完整URL。
nonceStr、timestamp:应该动态生成,而不能hardcode
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同
为安全考虑,签名必须在后台进行,其他调用js在前台进行。
2、ticket和accesstoken:
accesstoken:同调用微信其他接口的accesstoken,必须全局缓存,以免影响其他业务,即是说:微信所有业务应该用同一个accesstoken去调用微信接口,而不能自己刷新accesstoken。
ticket:同accesstoken一样,必须全局缓存,方式很多,可以放到数据库,或者放到缓存。目前ticket的有效时间为2小时,所以2小时内ticket未过期时,不能重复获取,否则可能导致ticket获取次数超过限额,导致sign失败。
3、注意代码执行顺序
首先应该获取签名,签名获取后在调用wx.config方法,然后再执行wx.ready、wx.error方法。
每个页面加载完成后都应该重新从后台获取签名信息,避免签名失败
具体开发步骤详见
5、官方常见问题及处理方法:
调用config 接口的时候传入参数 debug: true
可以开启debug模式,页面会alert出错误信息。以下为常见错误及解决方法:
1、invalid url domain
当前页面所在域名与使用的appid没有绑定,请确认正确填写绑定的域名,如果使用了端口号,则配置的绑定域名也要加上端口号(一个appid可以绑定三个有效域名,见
目录1.1.1)。
2、invalid signature签名错误。
建议按如下顺序检查:
确认签名算法正确,可用
http://mp./debug/cgi-bin/sandbox?t=jsapisign
页面工具进行校验。
确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr,
timestamp一致。
确认url是页面完整的url(请在当前页面alert(location.href.split(‘#’)[0])确认),包括’http(s)://’部分,以及’?’后面的GET参数部分,但不包括’#’hash后面的部分。
确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
确保一定缓存access_token和jsapi_ticket。
确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。
如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去’#’hash部分的链接(可用location.href.split(‘#’)[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
3、the permission value is offline verifying
这个错误是因为config没有正确执行,或者是调用的JSAPI没有传入config的jsApiList参数中。建议按如下顺序检查:
确认config正确通过。
如果是在页面加载好时就调用了JSAPI,则必须写在wx.ready的回调中。
确认config的jsApiList参数包含了这个JSAPI。
4、permission denied
该公众号没有权限使用这个JSAPI,或者是调用的JSAPI没有传入config的jsApiList参数中(部分接口需要认证之后才能使用)。
5、function not exist
当前客户端版本不支持该接口,请升级到新版体验。
6、为什么6.0.1版本config:ok,但是6.0.2版本之后不ok
因为6.0.2版本之前没有做权限验证,所以config都是ok,但这并不意味着你config中的签名是OK的,请在6.0.2检验是否生成正确的签名以保证config在高版本中也ok。
7、在iOS和Android都无法分享
请确认公众号已经认证,只有认证的公众号才具有分享相关接口权限,如果确实已经认证,则要检查监听接口是否在wx.ready回调函数中触发
8、服务上线之后无法获取jsapi_ticket,自己测试时没问题。
因为access_token和jsapi_ticket必须要在自己的服务器缓存,否则上线后会触发频率限制。请确保一定对token和ticket做缓存以减少2次服务器请求,不仅可以避免触发频率限制,还加快你们自己的服务速度。目前为了方便测试提供了1w的获取量,超过阀值后,服务将不再可用,请确保在服务上线前一定全局缓存access_token和jsapi_ticket,两者有效期均为7200秒,否则一旦上线触发频率限制,服务将不再可用。
9、uploadImage怎么传多图
目前只支持一次上传一张,多张图片需等前一张图片上传之后再调用该接口
10、没法对本地选择的图片进行预览
chooseImage接口本身就支持预览,不需要额外支持
11、通过a链接(例如先通过微信授权登录)跳转到b链接,invalid signature签名失败
后台生成签名的链接为使用jssdk的当前链接,也就是跳转后的b链接,请不要用微信登录的授权链接进行签名计算,后台签名的url一定是使用jssdk的当前页面的完整url除去’#’部分
12、出现config:fail错误
这是由于传入的config参数不全导致,请确保传入正确的appId、timestamp、nonceStr、signature和需要使用的jsApiList
13、如何把jsapi上传到微信的多媒体资源下载到自己的服务器
请参见文档中uploadVoice和uploadImage接口的备注说明
14、Android通过jssdk上传到微信服务器,第三方再从微信下载到自己的服务器,会出现杂音
微信团队已经修复此问题,目前后台已优化上线
15、绑定父级域名,是否其子域名也是可用的
是的,合法的子域名在绑定父域名之后是完全支持的
16、在iOS微信6.1版本中,分享的图片外链不显示,只能显示公众号页面内链的图片或者微信服务器的图片,已在6.2中修复
17、是否需要对低版本自己做兼容
jssdk都是兼容低版本的,不需要第三方自己额外做更多工作,但有的接口是6.0.2新引入的,只有新版才可调用
18、该公众号支付签名无效,无法发起该笔交易
请确保你使用的jweixin.js是官方线上版本,不仅可以减少用户流量,还有可能对某些bug进行修复,拷贝到第三方服务器中使用,官方将不对其出现的任何问题提供保障,具体支付签名算法可参考
JSSDK微信支付一栏
19、目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web
app的页面会导致签名失败,此问题已在Android6.2中修复
20、uploadImage在chooseImage的回调中有时候Android会不执行
Android6.2会解决此问题,若需支持低版本可以把调用uploadImage放在setTimeout中延迟100ms解决
21、require subscribe错误说明你没有订阅该测试号,该错误仅测试号会出现
22、getLocation返回的坐标在openLocation有偏差
因为getLocation返回的是gps坐标,openLocation打开的腾讯地图为火星坐标,需要第三方自己做转换,6.2版本开始已经支持直接获取火星坐标
23、查看公众号(未添加): “menuItem:addContact”不显示
目前仅有从公众号传播出去的链接才能显示,来源必须是公众号
24、ICP备案数据同步有一天延迟,所以请在第二日绑定
1、后台获取ticket方法:
public String cacheJsSDKTicket(String appid) throws IOException {
Assert.hasLength(appid);
String cachedTicket = spyMemcachedClient.get(WechatConst.Cache.CACHE_KEY + "TICKET");
if (cachedTicket != null && !"".equals(cachedTicket)) {
("Ticket exists, return directly ...");
return cachedT
("Ticket not exists, get from weixin ...");
String accessToken = weChatApi.getAccessToken(appid);
String ticket = weChatApi.getJsApiTicket(accessToken);
// 7200秒过期
int timeOut = 7200;
spyMemcachedClient.safeSet(WechatConst.Cache.CACHE_KEY + "TICKET", timeOut, ticket);
这里我将ticket全局缓存到memorycache中。
2、后台签名方法:
public String signJsSDK(String ticket, String url, String timestamp, String nonceStr) throws NoSuchAlgorithmException {
Map map = new HashMap();
map.put("noncestr", nonceStr);
map.put("jsapi_ticket", ticket);
map.put("timestamp", timestamp);
map.put("url", url);
String[] ss = {"noncestr", "jsapi_ticket", "timestamp", "url"};
Arrays.sort(ss);
String signStr = "";
for (String s : ss) {
signStr += s + "=" + map.get(s) + "&";
signStr = signStr.substring(0, signStr.length() - 1);
return new SHA1().getDigestOfString(signStr.getBytes());
3、获取签名方法:
public void getJsSdkInfo(CspServiceContext serviceContext) throws IOException, NoSuchAlgorithmException {
MessageObject mo = serviceContext.getRequestData();
String url = (String) mo.getValue("url");
String appid = (String) mo.getValue("appid");
String timestamp = Long.toString(System.currentTimeMillis() / 1000);
String nonceStr = UUID.randomUUID().toString();
// 缓存ticket
String ticket = memoryCacheManager.cacheJsSDKTicket(appid);
String sign = weChatApi.signJsSDK(ticket, url, timestamp, nonceStr);
Map resMap = new HashMap();
resMap.put("appid", appid);
resMap.put("ticket", ticket);
resMap.put("sign", sign);
resMap.put("nonceStr", nonceStr);
resMap.put("timestamp", timestamp);
Response resp = new Response(resMap);
serviceContext.setResponseData(resp);
serviceContext.setResult(Result.FAULT_RESULT);
4、前台获取jssdk:
function _wechatConfig(o) {
wx.config({
debug: debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: o.appid, // 必填,公众号的唯一标识
timestamp: o.timestamp, // 必填,生成签名的时间戳
nonceStr: o.nonceStr, // 必填,生成签名的随机串
signature: o.sign,// 必填,签名,见附录1
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage'
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
function _getWechatJsSdkInfo(callback) {
var s = W.Storage.get(W.location.href + "_" + area);
var appid ='wx7e80e8f';
ajaxJsonCall('/wechat/service/WeChat.getJsSdkInfo.json', {
url: W.location.href.split('#')[0],
appid: appid
}, function (data) {
if (data.rtnCode === "000000") {
var o = data.responseD
W.Storage.set(W.location.href + "_" + area, o, jsSdkTimeout);
callback(o);
W.Storage.remove(W.location.href + "_" + area);
}, false);
_getWechatJsSdkInfo(_wechatConfig);
wx.checkJsApi({
jsApiList: [
'getLocation',
'onMenuShareTimeline',
'onMenuShareAppMessage'
success: function (res) {
//alert(JSON.stringify(res));
//var url = "" + app_
var url = curD
function _shareAppMessage() {
// 页面加载后设置微信分享给朋友的内容
wx.onMenuShareAppMessage({
title: '圣诞老人送礼啦,现金红包人人领!', // 分享标题
desc: '“圣诞夺包”35000份礼包等你拆!', // 分享描述
link: encodeURI(curDomain + '/christmas/service/ChristmasSockOnline.home.do?area=cd'),//encodeURI(window.location.href.replace('&from=ad', '')), // 分享链接
imgUrl: url + '/public/christmas/img/shorejoin.jpg', // 分享图标
type: '', // 分享类型,music、video或link,不填默认为link
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
success: function () {
// 用户确认分享后执行的回调函数
//Message.toast.success("分享成功!").appear();
cancel: function () {
// 用户取消分享后执行的回调函数
//alert('cancel');
function _shareTimeline() {
// 设置分享到朋友圈的内容
wx.onMenuShareTimeline({
title: '圣诞老人送礼啦,现金红包人人领!', // 分享标题
link: encodeURI(curDomain + '/christmas/service/ChristmasSockOnline.home.do?area=cd'),//encodeURI(window.location.href.replace('&from=ad', '')), // 分享链接
imgUrl: url + '/public/christmas/img/shorejoin.jpg', // 分享图标
success: function () {
// 用户确认分享后执行的回调函数
Message.toast.success("分享成功!").appear();
cancel: function () {
// 用户取消分享后执行的回调函数
//alert('cancel');
wx.ready(function () {
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
//alert('success');
_shareAppMessage();
_shareTimeline();
wx.error(function (res) {
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
//alert('error');
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Android实现微信分享及注意事项
一、获取帮助文档并下载相关资料首先打开微信开放平台:https://open./ 如果没有注册,请先注册并上传开发者资料等待审核。资源中心----移动应用开发----分享与收藏功能----开发手册开发手册链接地址:https://open./zh_CN/htmledition/res/dev/document/sdk/android/index.html资源中心----移动应用开发----接入指南---Android接入指南(下面我们主要参考这个)二、接入微信分享功能1、申请AppID如何现在没有AppID可以先下载官方的Demo使用Demo中的AppID即可。SDK和Demo下载地址:https://open./cgi-bin/frame?t=resource/res_main_tmpl&verify=1&lang=zh_CN&target=res/app_download_android开发工具包(SDK)使用微信分享、登录、收藏、支付等功能需要的库以及文件。点击下载 Android开发工具包使用微信语音识别接口、语音合成接口。点击下载 语音SDK+Demo+开发文档使用微信图像识别接口。点击下载 图像SDK+Demo+开发文档使用微信卡券功能接口。点击下载 卡券SDK+开发文档范例代码包含了一个完整的范例工程。该范例的使用可以参阅Android平台上手指南:HelloWeixin@Android。点击下载签名生成工具用于获取安装到手机的第三方应用签名的apk包。点击下载 签名生成工具下载完成后我们可以参考一下Demo来集成。2、下载微信开发工具包(在上面已经下载)3、开始搭建开发环境然后将libammsdk.jar文件拷贝到工程lib目录下。注意:如果使用的是Demo中的AppID则包名一定要先和Demo的包名一致,否则分享会出错。4、新建一个Activity在里面放置一个按钮vcD48cD48cHJlIGNsYXNzPQ=="brush:">package net.sourceforge.
import android.app.A
import android.os.B
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import com.example.weixinsharedemo.share.WeixinShareM
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = (Button) findViewById(R.id.share_weibo);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
WeixinShareManager wsm = WeixinShareManager.getInstance(MainActivity.this);
wsm.shareByWeixin(wsm.new ShareContentPic(R.drawable.ic_launcher),
WeixinShareManager.WEIXIN_SHARE_TYPE_TALK);
4、开始创建我们的分享逻辑类并实现需要的分享功能package com.example.weixinsharedemo.
import android.content.C
import android.graphics.B
import android.graphics.BitmapF
import android.widget.T
import com.example.weixinsharedemo.util.WeixiShareU
import com.tencent.mm.sdk.modelmsg.SendMessageToWX;
import com.tencent.mm.sdk.modelmsg.WXImageO
import com.tencent.mm.sdk.modelmsg.WXMediaM
import com.tencent.mm.sdk.modelmsg.WXTextO
import com.tencent.mm.sdk.modelmsg.WXWebpageO
import com.tencent.mm.sdk.openapi.IWXAPI;
import com.tencent.mm.sdk.openapi.WXAPIF
* 实现微信分享功能的核心类
* @author Administrator
public class WeixinShareManager{
private static final int THUMB_SIZE = 150;
public static final int WEIXIN_SHARE_WAY_TEXT = 1;
public static final int WEIXIN_SHARE_WAY_PIC = 2;
public static final int WEIXIN_SHARE_WAY_WEBPAGE = 3;
public static final int WEIXIN_SHARE_TYPE_TALK = SendMessageToWX.Req.WXSceneS
public static final int WEIXIN_SHARE_TYPE_FRENDS = SendMessageToWX.Req.WXSceneT
private static WeixinShareM
private static String weixinAppId;
private IWXAPI wxA
private WeixinShareManager(Context context){
this.context =
//初始化数据
weixinAppId = WeixiShareUtil.getWeixinAppId(context);
//初始化微信分享代码
if(weixinAppId != null){
initWeixinShare(context);
* 获取WeixinShareManager实例
* 非线程安全,请在UI线程中操作
public static WeixinShareManager getInstance(Context context){
if(instance == null){
instance = new WeixinShareManager(context);
private void initWeixinShare(Context context){
wxApi = WXAPIFactory.createWXAPI(context, weixinAppId, true);
wxApi.registerApp(weixinAppId);
* 通过微信分享
* @param shareWay 分享的方式(文本、图片、链接)
* @param shareType 分享的类型(朋友圈,会话)
public void shareByWeixin(ShareContent shareContent, int shareType){
switch (shareContent.getShareWay()) {
case WEIXIN_SHARE_WAY_TEXT:
shareText(shareType, shareContent);
case WEIXIN_SHARE_WAY_PIC:
sharePicture(shareType, shareContent);
case WEIXIN_SHARE_WAY_WEBPAGE:
shareWebPage(shareType, shareContent);
private abstract class ShareContent{
protected abstract int getShareWay();
protected abstract String getContent();
protected abstract String getTitle();
protected abstract String getURL();
protected abstract int getPicResource();
* 设置分享文字的内容
* @author Administrator
public class ShareContentText extends ShareContent{
* 构造分享文字类
* @param text 分享的文字内容
public ShareContentText(String content){
this.content =
protected String getContent() {
protected String getTitle() {
protected String getURL() {
protected int getPicResource() {
return -1;
protected int getShareWay() {
return WEIXIN_SHARE_WAY_TEXT;
* 设置分享图片的内容
* @author Administrator
public class ShareContentPic extends ShareContent{
private int picR
public ShareContentPic(int picResource){
this.picResource = picR
protected String getContent() {
protected String getTitle() {
protected String getURL() {
protected int getPicResource() {
return picR
protected int getShareWay() {
return WEIXIN_SHARE_WAY_PIC;
* 设置分享链接的内容
* @author Administrator
public class ShareContentWebpage extends ShareContent{
private int picR
public ShareContentWebpage(String title, String content,
String url, int picResource){
this.title =
this.content =
this.url =
this.picResource = picR
protected String getContent() {
protected String getTitle() {
protected String getURL() {
protected int getPicResource() {
return picR
protected int getShareWay() {
return WEIXIN_SHARE_WAY_WEBPAGE;
* 分享文字
private void shareText(int shareType, ShareContent shareContent) {
String text = shareContent.getContent();
//初始化一个WXTextObject对象
WXTextObject textObj = new WXTextObject();
textObj.text =
//用WXTextObject对象初始化一个WXMediaMessage对象
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = textO
msg.description =
//构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
//transaction字段用于唯一标识一个请求
req.transaction = buildTransaction("textshare");
req.message =
//发送的目标场景, 可以选择发送到会话 WXSceneSession 或者朋友圈 WXSceneTimeline。 默认发送到会话。
req.scene = shareT
wxApi.sendReq(req);
* 分享图片
private void sharePicture(int shareType, ShareContent shareContent) {
Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), shareContent.getPicResource());
WXImageObject imgObj = new WXImageObject(bmp);
WXMediaMessage msg = new WXMediaMessage();
msg.mediaObject = imgO
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);
bmp.recycle();
msg.thumbData = WeixiShareUtil.bmpToByteArray(thumbBmp, true);
//设置缩略图
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("imgshareappdata");
req.message =
req.scene = shareT
wxApi.sendReq(req);
* 分享链接
private void shareWebPage(int shareType, ShareContent shareContent) {
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = shareContent.getURL();
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = shareContent.getTitle();
msg.description = shareContent.getContent();
Bitmap thumb = BitmapFactory.decodeResource(context.getResources(), shareContent.getPicResource());
if(thumb == null){
Toast.makeText(context, "图片不能为空", Toast.LENGTH_SHORT).show();
msg.thumbData = WeixiShareUtil.bmpToByteArray(thumb, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message =
req.scene = shareT
wxApi.sendReq(req);
private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
上面只是实现了文字、图片、链接的分享功能,如需分享视频、音频可以添加。5、实现分享结果反馈要实现分享结果的反馈,微信已经将结果的处理封装到了WXEntryActivity中(jar包中),所以我们要继承该类获取反馈结果。在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity(例如应用程序的包名为net.sourceforge.simcpux,则新添加的类如下图所示)package net.sourceforge.simcpux.
import com.example.weixinsharedemo.share.WXCallbackA
public class CallBackActivity extends WXCallbackActivity{
public void weixinResp(int respCode) {
System.out.println("respCode = " + respCode);
}注意:记得去Mainfest文件中注册Activity
三、运行代码使用Demo中AppId的朋友在这里要注意,请设置一下签名文件(在上面下载的SDK中有)如下:点击Browser进行选择,运行即可。如果有什么问题请在下面留言,也可以加博客旁边的QQ群()进行详细交流。另外可以关注一下我的阳光小栈(www.)。

我要回帖

更多关于 微信公众号关注才能看 的文章

 

随机推荐