查看: 3630|回复: 13

[Android常见问题] 微信分享的集成

[复制链接]

Rank: 5Rank: 5

主题:
帖子:
积分:
0

[Android常见问题] 微信分享的集成

[复制链接]
3630 13 | 发表于 2017-9-13 20:06:00 |阅读模式 | |
本帖最后由 wolf 于 2017-9-14 09:25 编辑

申请微信AppId

         具体流程参考http://bbs.mob.com/thread-95-1-4.html里面的教程,
    注意:链接中说道的签名一定要注意,必须保证微信后台配置的包名和签名与你的app的包名和签名一致才可以哦;

二集成ShareSDK

1、  官网后台创建应用


添加应用

输入应用名字,点击保存即可

添加ShareSDK产品,点击下图的位置,在弹出的选择框点击确定添加

然后选择概况可以看到appkey的appsecret,记好备用

2、  下载ShareSDK

首先进入官网http://www.mob.com/选择SDK下载里面的ShareSDKfor Android

进入下载页面点击SDK下载,在弹出的选择框页面选择微信,点击下载SDK

3、  生成项目文件


解压缩刚刚下载好的压缩包,进入 ShareSDKfor Android目录里面双击QuickIntegrater.jar

输入包名选择确定

会生成一个与上一步里面的项目名称一致的也就是名为Sample的目录,进入这个目录可以看到这些目录,留待后用



4、  创建项目
然后我们新建一个AndroidStudio项目,注意包名要和刚刚输入的包名一致


然后一致Next直到finish就可以。

5、  集成SDK的内容

然后我们进入刚刚创建好的项目,切换到Project下,开始将Sample目录里面的东西拷贝进项目
首先是assets目录,这个目录要拷贝的位置在app---src---main目录下面

然后拷贝libs里面的jar包进入libs目录

然后分别复制res和src里面的内容进项目
res的内容与原有的文件夹合并一下,如果有文件名称冲突,合并一下内容即可
这几个文件夹都不能少

注意src目录里面的cn.sharesdk.demo目录一定要完整的复制到Java目录下面,否则会出现导包错误的情况

这时我们可以看到一个WXEntryActivity的类,这个类的位置一定要处于自己的包名,也就是build.gradle里面的ApplicationId对应的名称目录下面的wxapi目录下面,如果不在这个路径,那么要自己移动到对应的位置,否则会没有回调

相应的也要配置AndroidManifest.xml里面WXEntryActivity的路径与Java路径对应

6、  配置ManiFest文件

下面还需要配置下Manifest文件;可以直接复制进入自己的Manifest文件
首先是添加权限:
1.   <uses-permissionandroid:name="android.permission.GET_TASKS" />
2.   <uses-permissionandroid:name="android.permission.INTERNET" />
3.   <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE" />
4.   <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE" />
5.   <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE" />
6.   <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />
7.   <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
8.   <uses-permissionandroid:name="android.permission.MANAGE_ACCOUNTS"/>
9.   <uses-permissionandroid:name="android.permission.GET_ACCOUNTS"/>
10.  <!-- 蓝牙分享所需的权限 -->
11.    <uses-permissionandroid:name="android.permission.BLUETOOTH" />
12.    <uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN" />
添加ShareSDK必要的activity,并且在此配置ShareSDKappkeyappsecret
<!-- MobApplication作为项目Application,如果已经有自己的Application,那么可以继承一下MobApplication,如果不方便继承那么可以使用MobSDK.init(Context context,"MobAppkey","MobAppsecret");初始化,初始化不能少
1.    -->
2.   <application
3.         android:name="com.mob.MobApplication">
4.   
5.          <!-- 其它的activity -->
6.   
7.          <!-- ShareSDK的activity -->
8.   <activity
9.       android:name="com.mob.tools.MobUIShell"
10.       android:theme="@android:style/Theme.Translucent.NoTitleBar"
11.      android:configChanges="keyboardHidden|orientation|screenSize"
12.      android:windowSoftInputMode="stateHidden|adjustResize">
13.  </activity>
14.  <!-- 填写您从Mob开发者后台中得到的Appkey和AppSecret,如果使用mobsdk.init(Context context,"MobAppkey","MobAppsecret")方法就不用写了 -->
15.  <meta-dataandroid:name="Mob-AppKey" android:value="您的AppKey"/>
16.  <meta-dataandroid:name="Mob-AppSecret" android:value="您的AppSecret"/>
17.  </application>

上面的除了说明的可以不写之外,其他必须配置不能少
<!--微信分享回调 以防packagename和包名不同,最好在wxapi前面加上自己的包名-->
1.   <activity
2.        android:name="包名.wxapi.WXEntryActivity"
3.       android:theme="@android:style/Theme.Translucent.NoTitleBar"
4.       android:configChanges="keyboardHidden|orientation|screenSize"
5.       android:exported="true"
6.        android:screenOrientation="portrait"/>
7.   
下面是我的配置截图

7、  配置微信的AppId和AppSecret

接下来我们配置从微信开放平台获得的AppIdAppSecret
进入刚刚拷贝进去的assets里面的ShareSDK.xml文件里面,找到微信的配置,其他的平台的这里忽略不管,替换Wechat(好友)WechatMoments(朋友圈)以及WechatFavorite(收藏)

以微信好友的配置做介绍,首先替换AppIdAppSecret为第一步里面获取到的值,然后然后修改BypassApprovalfalse,如果设置为true代表绕过审核,不需要去申请appidsecret,但是只能分享图片和文字,usernamepath是分享小程序用的的,userName是小程序的原始IDpath是小程序内的页面路径;而且必须保证微信开放平台与微信公众/小程序绑定才可以分享;不需要的不用管
所有的配置就完成了

8、  分享的代码

然后我们开始写分享的代码,分为两种,一种是OneKeyshare一键分享,一种是指定平台分享,这里我们我们以分享网页和分享图片为例进行说明
如上所示,onekeyshare不用设置sharetype,但是指定平台分享一定要设置。也不用指定是哪个平台,如果是朋友圈,那么指定分享需要将Wechat.NAME修改为WechatMoments.NAME。微信还有其他的分享方式,比如分享文本,音乐,本地视频之类的,都大同小异,只是参数设置不同而已,具体的参数设置参考文档http://wiki.mob.com/%E4%B8%8D%E5%90%8C%E5%B9%B3%E5%8F%B0%E5%88%86%E4%BA%AB%E5%86%85%E5%AE%B9%E7%9A%84%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E/里面微信的说明
接下来我们运行代码,这里一定要注意,不绕过审核,也就是ShareSDK.xml里面的微信的BypassApproval设置为false,要使用和微信开放平台里面配置的签名对应的keystore进行打包,否则不能调起微信客户端。如果绕过审核则没有限制。

9、  回调代码

上面的代码运行之后就可以分享了,然后我们处理一下回调逻辑

这里要注意如果绕过审核不会正确回调。
对于微信好友必须在分享完成之后的弹出框选择返回APP,才能获取成功回调,否则点击留在微信则不能。
对于微信朋友圈如果分享成功则会直接回调APP,执行到成功的回调


Rank: 1

主题:
帖子:
积分:
0
发表于 2017-10-13 17:02:45 |
分享我写的指定平台分享,但是点击按钮提示空指针,异常提示在Platform platform = ShareSDK.getPlatform(WechatMoments.NAME);这一行,这是什么原因导致的呢?

Rank: 5Rank: 5

主题:
帖子:
积分:
0
 楼主| 发表于 2017-10-13 17:30:27 |
没有初始化。使用MobSDK.init(Context context,"MobAppkey","MobAppsecret");初始化一下

Rank: 1

主题:
帖子:
积分:
0
发表于 2017-10-20 16:30:12 |
在微信的开发文档中这样的说明:
2.下载SDK及API文档
Android Studio环境下:
在build.gradle文件中,添加如下依赖即可:
dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}

dependencies {
    compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}
(其中,前者包含统计功能)


请问我怎么才能切换到带mta的sdk

Rank: 5Rank: 5

主题:
帖子:
积分:
0
发表于 2017-10-20 16:58:16 |
飞飞飞 发表于 2017-10-20 16:30
在微信的开发文档中这样的说明:

您这个集成是微信原生的SDK,并不是ShareSDK哦,关于微信原生的SDK的集成问题您需要去咨询微信的客服了。

Rank: 1

主题:
帖子:
积分:
0
发表于 2017-10-24 19:29:28 |
我用SHARE_WEBPAGE的分享方式,为啥分享出去的只是一张图片而不是一个网页链接呢?

Rank: 5Rank: 5

主题:
帖子:
积分:
0
发表于 2017-10-25 11:01:29 |
白璐大白 发表于 2017-10-24 19:29
我用SHARE_WEBPAGE的分享方式,为啥分享出去的只是一张图片而不是一个网页链接呢? ...

您微信绕过了审核了吗?

Rank: 1

主题:
帖子:
积分:
0
发表于 2017-11-2 15:20:42 |
src下的cn.sharesdk.onekeyshare粘贴到项目哪里   我自己的包名是com.jiii.likk

Rank: 5Rank: 5

主题:
帖子:
积分:
0
发表于 2017-11-2 15:36:42 |
cn.sharesdk.onekeyshare这是一键分享的源码,放置到您的src/main/java这个目录结构下。

Rank: 1

主题:
帖子:
积分:
0
发表于 2017-11-4 10:42:30 |
微信和qq都是打开之后就回掉了onComplete,请问下是什么原因呢
12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术支持
免费咨询 | 24小时在线
快速回复 返回顶部 返回列表