如何让我们的App接收到微信的反馈?

1. 在你的包名相应目录下新建一个wxapi目录,并在该wxapi目录下新增一个WXEntryActivity类,该类继承自Activity,并在manifest文件里面加上exported属性,设置为true。

2. 实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法。

3. 在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法。当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。

其中,必须要新建WXEntryActivity类,实现IWXAPIEventHandler接口,同时该文件必须在xxx.xxx.xxx.wxapi包下,回调才有作用

下面说下我分享回调成功后的心得:

1:微信分享成功之后回调的实现是如此的坑爹。

2:在程序中我们并不需要自己主动的去启动WXEntryActivity,只需要把回调后的逻辑处理代码在onResq()这个回调接口中实现,处理完逻辑后将该Activity finish()掉就可以了,为了避免用户发现回调成功后出的toast是在一个新的Activity中,我们可以设置WXEntryActivity的主题为透明样式,设置无动画,这样用户就不会察觉到回调成功后是启动了一个新的Activity。

3:在WXEntryActivity中一定要参考官方的文档,实现onNewIntent(Intent intent)方法,这个方法为微信客户端分享成功后回调我们应用中的WXEntryActivity类,通过newintent(Intent intent)来启动WXEntryActivity类,并在newIntent方法中通过IWXAPI接口中的handleIntent方法,注册监听,下面给出示例代码。

4:在AndroidManifase中作如下配置:

android:name="cn.ishuidi.shuidi.wxapi.WXEntryActivity"

android:launchMode="singleTop"

android:exported="true"

android:theme="@style/comment_activity">

这是参考微信官方的demo进行copy的,其中android:exported="true"的意思为允许该Activity被其他应用调用,这句话很重要。

下面普及newIntent()方法的解释:

onCreate是用来创建一个Activity也就是创建一个窗体,但一个Activty处于任务栈的顶端,若再次调用startActivity去创建它,则不会再次创建。若你想利用已有的Acivity去处理别的Intent时,你就可以利用onNewIntent来处理。在onNewIntent里面就会获得新的Intent.

@Override

protectedvoidonNewIntent(Intent intent) {

// TODO Auto-generated method stub

super.onNewIntent(intent);

}

如果IntentActivity处于任务栈的顶端,也就是说之前打开过的Activity,现在处于

onPause

onStop 状态的话

其他应用再发送Intent的话,执行顺序为:

onNewIntent

onRestart

onStart

onResume

1.onNewIntent(Intent intent) 是Activity类的方法.它被调用发几种情况如下:

android:launchMode="singleTask" 配置在 Mainifest 中,它保证了栈中此Activity总是只有一个,无论你启动它多少次;

Activiy配置成android:launchMode="singleTask" ,在点Home键退出Activity而再次启动新的Intent进来时onNewIntent(Intent intent) 方法会被调用到;

2.利用已有的Acivity去处理别的Intent时,你就可以利用onNewIntent来处理,通常被用在有搜索请求的activity,而其该activity有好几个intent-filter,该方法被调用的前提

a、该activity设置如下属性 android:launchMode="singleTop"。

b、该activity已经处在栈的顶端,通过其他的方法又重新启动该acitvity时被调用,如搜索,这时oncreate()方法不调用。

看完onnewIntent()方法的介绍后,大家应该明白一点了,我们就是将WXEntryActivity设置成singleTop了。

下面给出我在项目中实现的示例代码,代码量很少,读者可以稍作修改就可以使用,框架是正确的。

packagecn.ishuidi.shuidi.wxapi;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.widget.Toast;

importcn.ishuidi.openutils.OpenUtils;

importcn.ishuidi.shuidi.R;

importcn.ishuidi.shuidi.background.ShuiDi;

importcn.ishuidi.shuidi.background.data.credit.CreditManager;

importcom.tencent.mm.sdk.openapi.BaseReq;

importcom.tencent.mm.sdk.openapi.BaseResp;

importcom.tencent.mm.sdk.openapi.IWXAPI;

importcom.tencent.mm.sdk.openapi.IWXAPIEventHandler;

publicclassWXEntryActivityextendsActivityimplementsIWXAPIEventHandler {

privatestaticCreditManager.KGainCreditType gainCreditType;

privatestaticlongdataShareId;

privateIWXAPI api;

publicstaticvoidsetTypeAndDataShareId(CreditManager.KGainCreditType type,longsrcId) {

gainCreditType = type;

dataShareId = srcId;

}

@Override

publicvoidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.wx_entry_activity);

initData();

}

@Override

protectedvoidonNewIntent(Intent intent) {

super.onNewIntent(intent);

setIntent(intent);

initData();

}

privatevoidinitData() {

api = OpenUtils.instance().getIWXAPI();

api.handleIntent(getIntent(), this);

}

@Override

publicvoidonReq(BaseReq req) {

}

@Override

publicvoidonResp(BaseResp resp) {

String result = null;

switch(resp.errCode) {

caseBaseResp.ErrCode.ERR_OK: {

CreditManager creditManager = ShuiDi.instance().getCreditManager();

creditManager.submitGainCreditEventToServer(gainCreditType, dataShareId);

result = "分享成功";

}

break;

caseBaseResp.ErrCode.ERR_USER_CANCEL:

result = "分享取消";

break;

caseBaseResp.ErrCode.ERR_AUTH_DENIED:

result = "分享被拒绝";

break;

default:

result = "分享返回";

break;

}

Toast.makeText(this, result, Toast.LENGTH_LONG).show();

this.finish();

}

}

好了,就说这么多了。

android微信分享成功后回调,微信分享成功后回调问题相关推荐

  1. Android 微信分享后留在微信,没有回调的问题解决方案

    Android 微信分享后留在微信,没有回调的问题解决方案 参考文章: (1)Android 微信分享后留在微信,没有回调的问题解决方案 (2)https://www.cnblogs.com/zhan ...

  2. 苹果备忘录分享不了微信提示无法连接服务器,微信分享接口分享完成后在某些苹果设备上不能正常执行回调...

    我写了一个H5项目,现在已经在线上,发现使用ip7 plus ip x等手机在分享给朋友后可以正常完成回调然后执行跳转动作,但是如果分享到朋友圈的话,分享完成后(朋友圈分享成功)不能正常的执行回调完成 ...

  3. Android中的友盟(微信、QQ、新浪)第三方登录分享

    前言:我再这里只总结Android开发人员需要做的,其他的就去看开发文档吧,例如获取Appkey,就找你的领导要去吧. 一.准备工作 第一步:快速集成. 快速集成包含自动集成与手动集成两种方式,开发者 ...

  4. Android微信h5分享,H5网页实现微信分享功能

    H5网页实现微信分享功能 一,首先在公众号管理后台"公众号设置"的"功能设置"里填写JS接口安全域名,域名需要通过ICP备案,没有备案域名可以用SAE.BAE等 ...

  5. Android开发知识(十一):让你的应用接入微信分享,完美绕过微信分享的大坑

    文章目录 一.申请应用 二.配置微信分享的SDK 三.微信分享示例 四.微信分享的结果回调 五.微信分享的踩坑总结 一.申请应用 1.首先到 [ 微信开放平台官网] 申请注册帐号,这些流程就忽略了到官 ...

  6. qq接入和分享android,Android社交登录授权、分享SDK,支持微信、微博和QQ

    社交登录授权,分享SDK 支持微信.微博.QQ登录授权 微信好友.微信朋友圈.微博.QQ好友.QQ空间分享 Gradlecompile 'com.elbbbird.android:socialsdk: ...

  7. Android Studio 微信分享功能(包括可以分享到朋友圈,分享到朋友)

    第一步:配置sdk 在build.gradle文件中,添加如下依赖即可: 在Android Studio中新建你的工程,并保证网络设置可以成功从jcenter下载微信SDK即可. dependenci ...

  8. android 微博分享需要测试账号密码,Android社交登录授权、分享SDK,支持微信、微博和QQ...

    社交登录授权,分享SDK 支持微信.微博.QQ登录授权 微信好友.微信朋友圈.微博.QQ好友.QQ空间分享 Gradle compile 'com.elbbbird.android:socialsdk ...

  9. android微信支付黑屏,Android 調用微信登陸、支付、分享,出現的白屏、黑屏、閃屏問題。...

    當我在去調用微信的登錄界面,或者其他支付界面,WXEntryActivity又一個界面,這樣看起來很不協調(WXEntryActivity類finish的時候會有閃屏的效果).為了讓用戶感覺只是拉起了 ...

  10. Android 集成微信分享2,实现微信分享

    1.build.gradle下添加微信sdk依赖 compile ('com.xyzlf.share:sharesdk:0.0.10') {exclude group: 'com.android.su ...

最新文章

  1. QTP的那些事---页面弹出框的处理,页面等待加载的处理
  2. java拼接字符串 判断内容_java--字符串拼接比较
  3. 人工智能的三大教父,谱写了一段关于勇气的寓言
  4. ubuntu没有声音-只有类比立体声输入
  5. SAP CRM WebClient UI SSO cookie
  6. Axios 作弊表(Cheat Sheet)
  7. 动脑2017android_您肯定要在2017年初尝试的25个新Android库
  8. css在盒子中垂直居中和固定居中
  9. linux nslcd服务,CentOS 6通过ldap集成AD域账号(nslcd方式)
  10. 【数据结构与算法基础】队列、栈、递归
  11. ACCESS数据库C#操作类(SQLHELPER修改版)——转自网上
  12. 【C++ 与 STL】不定长数组:vector
  13. 【链表】牛客网:合并两个排序的链表
  14. iOS开发环境:XCode
  15. java暗装没有快捷键,java强行videos
  16. c语言switch猜拳游戏,js回顾,用if语句,和switch语句来编写猜拳小游戏。
  17. linux中dns服务故障,Linux DNS服务器故障解决
  18. 今日新闻早报 精选简报12条 每天一分钟 知晓天下事 2月3日
  19. 非线性方程(组):计算基本理论
  20. 面试官:请你谈谈ConcurrentHashMap

热门文章

  1. Win10系统设置开机默认开启数字小键盘
  2. 如何将图片转为excel表格文件?
  3. UWB定位系统场景的分析
  4. python的编程方式有_十大编程语言、三大编程方式,总结好了,快收起来
  5. Typora安装主题方法
  6. 恶意代码检测理论(静态与动态分析基础)
  7. kali linux安装谷歌浏览器
  8. Typora_Markdown_图片标题(题注)
  9. linux下查看U盘文件
  10. Hadoop——3.x安装部署