记录微信分享的一些坑

在帮别的项目干活时遇到了要做微信分享的功能,当时觉得这不就是小case(因为之前都写过),可能是由于那边项目的人不太懂吧,居然没有提前去申请微信app_id,没关系,反正写过,打开之前的项目,复制粘贴,他们申请好了肯定就能用了,先看看我是怎么写的。



1、添加最新的微信分享sdk:

compile'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

2、微信初始化,你可以在Application 里面写,也可以在分享的activity的onCreat方法里面写:

public IWXAPI api;      //这个对象是用来向微信发送数据的一个接口,所有的信息发送都是基于这个对象的

public void registerWeChat(Context context) {  //向微信注册app

api = WXAPIFactory.createWXAPI(context, APP_ID, true);

api.registerApp(APP_ID);

}

3、就是你写你分享的ui了,具体就不粘贴代码了,下面看一下微信分享的方法,下面以网页分享为例子:

/**

*微信分享

*/

private void  wechatShare(int flag,String title,String content,String url) {

WXWebpageObject webpage = new  WXWebpageObject();

webpage.webpageUrl = url;//分享的url

WXMediaMessage msg = new WXMediaMessage(webpage);

msg.title=title;//分享的标题

msg.description=content;//分享描述

//这里替换一张自己工程里的图片资源

Bitmapthumb=BitmapFactory.decodeResource(getResources(),R.mipmap.icon_share);

msg.setThumbImage(thumb);

SendMessageToWX.Reqreq=newSendMessageToWX.Req();

req.transaction= buildTransaction("webpage");

req.message=msg;

req.scene=

flag==0?SendMessageToWX.Req.WXSceneSession:SendMessageToWX.Req.WXSceneTimeline;

mIWXAPI.sendReq(req);

}

privateStringbuildTransaction(finalStringtype) {

return(type==null) ?String.valueOf(System.currentTimeMillis())

:type+System.currentTimeMillis();

}

4、最后别忘记了微信分享的回调,一定要在wxapi包下面建一个Activity名字叫WXEntryActivity(固定)

public class  WXEntryActivity  extends  AppCompatActivity   implements  IWXAPIEventHandler{

private static final  String  TAG  =  "WXEntryActivity";

private  IWXAPI api;

@Override

public void  onCreate(Bundle  savedInstanceState) {

super.onCreate(savedInstanceState);

api = WXAPIFactory.createWXAPI(this,Constant.WX_APP_ID,false);

//api.registerApp(Constant.WX_APP_ID);

api.handleIntent(getIntent(),this);

}

@Override

protected voidonNewIntent(Intentintent) {

super.onNewIntent(intent);

setIntent(intent);

api.handleIntent(intent,this);

}

@Override

public voidonReq(BaseReq baseReq) {

Log.d(TAG,"we chat in");

}

@Override

public voidonResp(BaseResp baseResp) {

switch(baseResp.errCode) {

case  BaseResp.ErrCode.ERR_OK:

//分享成功

Toast.makeText(WXEntryActivity.this,R.string.share_success,Toast.LENGTH_SHORT).show();

break;

case  BaseResp.ErrCode.ERR_USER_CANCEL:

//分享取消

Toast.makeText(WXEntryActivity.this,R.string.share_cancel,Toast.LENGTH_SHORT).show();

break;

case  BaseResp.ErrCode.ERR_AUTH_DENIED:

Toast.makeText(WXEntryActivity.this,R.string.share_denied,Toast.LENGTH_SHORT).show();

break;

case  BaseResp.ErrCode.ERR_SENT_FAILED:

Toast.makeText(WXEntryActivity.this,R.string.share_send_failed,Toast.LENGTH_SHORT).show();

break;

case  BaseResp.ErrCode.ERR_UNSUPPORT:

Toast.makeText(WXEntryActivity.this,R.string.share_unsupport_error,Toast.LENGTH_SHORT)

.show();

break;

default:

Toast.makeText(WXEntryActivity.this,R.string.share_failed,Toast.LENGTH_SHORT).show();

break;

}

finish();

}

}

5、最后别忘记了在AndroidMainfest.xml里面注册:

<activity

android:name="WXEntryActivity"

android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true"

android:screenOrientation="portrait"

android:theme="@android:style/Theme.Translucent.NoTitleBar"/>


写完手工,过两天他们告诉我appId申请下来了,填写进去,没问题,一切OK,我果然还是很厉害的,但是事情还没有结束,过了大概一个月他们突然告诉我微信分享不能用了。具体情况是朋友圈可以分享,微信好友分享的时候拉起好友列表以后发现好友列表点击无效。这时候我就不信了,不可能吧,要坏一起坏,要好一起好啊,坏一般啥意思,我代码又没动过,想不明白,这时候我开启了百度之旅。

 还真找到了几个同样的问题:

友盟分享,点击微信分享,可以进入微信,也有微信好友,点击要分享的好友,不能成功,混淆什么都加了,不知道什么原因

这个问题困扰了我好久,微信和app都卸载了好几遍,但是一到微信好友界面就是点击后不能跳出弹框,朋友圈直接不能点开!!

最先感觉好像这个靠谱http://bbs.umeng.com/thread-13230-2-1.html是友盟官方论坛,说是没有混淆好,我就千辛万苦混淆了,可是。。。。。不行!!问题依然存在。

接下来我终于找到了解决方法,连接在此:http://bbs.umeng.com/thread-26260-1-1.html

仔细看了好久,这是3月多的公告啊,我也没用精简版啊,不对不对,接着找。


这个就很像了和我的问题一模一样嘛,赶紧去加混淆,等等,不对,我就没开启混淆加什么加。

就这样困扰了一天,直到晚上睡觉前突然想到,代码我没动,应该没问题,微信那么吊,应该也不会有问题,是不是接口的锅,先到这里赶紧打开电脑 把所有分享信息写死,果然,成功了。

接着开始分析是哪里的问题吧仔细看看看分享的参数:

webpage.webpageUrl=url;

WXMediaMessagemsg=newWXMediaMessage(webpage);

msg.title=title;

msg.description=content;

//这里替换一张自己工程里的图片资源

Bitmapthumb=BitmapFactory.decodeResource(getResources(),R.mipmap.icon_share);

msg.setThumbImage(thumb);

SendMessageToWX.Reqreq=newSendMessageToWX.Req();

req.transaction= buildTransaction("webpage");

req.message=msg;

最终发现接口返回的title是空的,长见识了,原来title为空会导致这样的问题,在此记录一下,以后一定要谨记。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,569评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,499评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,271评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,087评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,474评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,670评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,911评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,636评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,397评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,607评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,093评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,418评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,074评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,092评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,865评论 0 196
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,726评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,627评论 2 270

推荐阅读更多精彩内容