Android ShareSDK快速实现分享功能

时间:2022-06-20 23:49:50

第一步 :获取sharesdk

  为了集成sharesdk,您首先需要到sharesdk官方网站注册并且创建应用,获得sharesdk的appkey,然后到sdk的下载页面下载sdk的压缩包,解压以后可以得到如下图的目录结构:

  sharesdk在“sharesdk for android”目录下,此目录中的“libs”包含“mainlibs”和“onekeyshare” 分别是sharesdk的核心库和“快捷分享”的源码库,说明文档也在“sharesdk for android”目录下,集成sharesdk前请务必仔细阅读。 “sharesdk for android apidoc”包含mainlibs和onekeyshare的javadoc,供开发者开发时查阅。 “sharesdk for android sample”包含sharesdk的功能演示代码和apk文件,sample源码的javadoc在中。 “sharesdk for android services”包含sharesdk已经发布的“插件服务”,暂时我们只提供了“评论与赞”服务,压缩包中已经提供了此插件服务的依赖库、示例代码、javadoc和apk文件。

第二步:导入sharesdk

sharesdk集成方式:

1、直接复制jar包到目标项目libs目录

  直接复制jar和资源的方式,可以参考sharesdk的sample项目。 使用复制jar的方法,需要除了复制mainlibs/libs中的jar外,还需要复制mainlibs/res中图片和strings,否则会出现授权时找不到资源的问题。 而且如果您的项目也集成了快捷分享,还需要复制onekeyshare/src中的源码、onekeyshare/res中的资源,如果你的项目里没有android-support-v4的jar需要把onekeyshare/libs下的android-support-v4的jar到您的项目中。

2、快速生成项目

Android ShareSDK快速实现分享功能

  由于直接复制jar包和资源的集成方式比较麻烦,sharesdk提供了快速集成的程序,在windows下可以直接双击执行,完成以后可以通过复制目标目录中的文件到您项目中覆盖就行了。 极大简化了“直接复制jar和资源”这种集成方式的操作步骤。 对于你的项目是刚开发或者想写一个demo测试sharesdk功能,可以使用这种方法快速集成

第三步:添加应用信息

  有三种方式

  第一种:在sharesdk的应用管理后台中配置,使用此方法需要调用sharesdk.initsdk(context,你的应用在sharesdk注册时返回的appkey)方法进行初始化,如果以后更改了注册信息可以直接从网上更改,而不用重新发布新版本进行更新。(优先级最高)。

  第二种:通过代码配置“setplatformdevinfo(string, hashmap<string, object>)”方法,使用此方法需要调用sharesdk.init(context,你的应用在sharesdk注册时返回的appkey)方法进行初始化。(优先级中)。

  第三种:通过“assets/sharesdk.xml”文件来配置,次方式会以明文存在,但这种方式最为简单。(优先级最低)。

  这三种方式开发者可以自行选择,不过这三种设置方式各有区别:第一种方式可以实现“动态配置应用信息”的功能,但是一旦脱离网络,sharesdk可能无法运作;第三种方式是优先级最低的方式,但是它最为方便、集中;最后使用代码设置的方式是最灵活的方式,第二种方式开发者可以在代码里面写死应用信息,也可以通过私有协议,从自己的服务器上动态获取应用注册信息,其优先级居第一种和第二种之间。 使用sharesdk.xml配置注册信息

?
1
2
3
4
5
6
7
8
9
<sharesdk appkey="填写您在sharesdk上注册到的appkey" />
<sinaweibo
sortid="此平台在您分享列表中的位置,整型,数值越大越靠后"
appkey="填写您在新浪微博上注册到的appkey"
appsecret="填写您在新浪微博上注册到的appsecret"
id="自定义字段,整型,用于您项目中对此平台的识别符"
redirecturl="填写您在新浪微博上注册的redirecturl"
sharebyappclient="是否使用客户端进行分享"
enable="布尔值,标记此平台是否有效" />

  sharesdk.xml以xml格式存储数据,每一个平台一个块,除了社交平台外,开发者在sharesdk注册应用时得到的appkey需要填写在块“sharesdk”中,如果此appkey不是开发者自己的appkey,则将来在sharesdk应用后台的统计数据将不正确。sharesdk的每一个平台都具备sortid、id、enable四个字段,除此之外的字段(如新浪微博的appkey、appsecret、redirecturl、sharebyappclient等字段)需要到目标平台上注册应用以后得到,请正确填写这些字段的数据,否则sharesdk无法完成授权,则后续的其它操作也将无法执行。

  代码配置注册信息示例(演示初始化新浪微博配置信息) 因为各个分享平台可以设置的配置信息不同,具体分享平台需要设置哪些配置信息请参考sample里的sharesdk.xml配置文件

?
1
2
3
4
5
6
7
8
9
10
sharesdk.initsdk(context,"你的应用在sharesdk注册时返回的appkey");
hashmap<string,object> hashmap = new hashmap<string, object>();
hashmap.put("id","1");
hashmap.put("sortid","1");
hashmap.put("appkey","568898243");
hashmap.put("appsecret","38a4f8204cc784f81f9f0daaf31e02e3");
hashmap.put("redirecturl","http://www.sharesdk.cn");
hashmap.put("sharebyappclient","true");
hashmap.put("enable","true");
sharesdk.setplatformdevinfo(sinaweibo.name,hashmap);

  方法需要在sharesdk.initsdk()方法后调用,如果调用了sharesdk.stopsdk()需要在sharesdk.initsdk后重新调用sharesdk.setplatformdevinfo()方法。 关于应用信息不同字段的更详细解释,可以参考sharesdk.xml文件头部的说明。

第四步:配置androidmanifest.xml

  不同的集成度需要在androidmanifest.xml中添加的内容不一样。但是首先您需要添加下面的权限列表:

?
1
2
3
4
5
6
7
8
9
<uses-permission android:name="android.permission.access_wifi_state"/>
<uses-permission android:name="android.permission.access_network_state"/>
<uses-permission android:name="android.permission.change_wifi_state"/>
<uses-permission android:name="android.permission.get_accounts"/>
<uses-permission android:name="android.permission.manage_accounts"/>
<uses-permission android:name="android.permission.read_phone_state"/>
<uses-permission android:name="android.permission.write_external_storage"/>
<uses-permission android:name="android.permission.get_tasks"/>
<uses-permission android:name="android.permission.internet"/>

  这些权限将允许您的项目和sharesdk判断当前应用是否“前置”、获取连接网络的权限、获取您的设备网络状态的权限、实现https安全连接的权限、读取手机设备状态的权限和保存必要配置的权限。一般来说,即便不集成sharesdk,大部分的项目也都会注册申请这些权限。

  其次,为了授权操作可以顺利完成,需要在application下注册下面的activity:

?
1
2
3
4
5
6
<activity
android:name="com.mob.tools.mobuishell"
android:theme="@android:style/theme.translucent.notitlebar"
android:configchanges="keyboardhidden|orientation|screensize"
android:screenorientation="portrait"
android:windowsoftinputmode="statehidden|adjustresize" />

  如果您的项目集微信或者微信朋友圈,请查看androidmanifest.xml配置文件里的package路径,需要在package目录下创建wxapi目录再放置wxentryactivity。 没有此activity在微信分享后回调会检查是否有此activity,没有将会报错。

?
1
2
3
4
5
6
<activity
android:name=".wxapi.wxentryactivity"
android:theme="@android:style/theme.translucent.notitlebar"
android:configchanges="keyboardhidden|orientation|screensize"
android:exported="true"
android:screenorientation="portrait" />

  而如果您的项目集易信的两个平台,请查看androidmanifest.xml配置文件里的package路径需要在package目录下创建yxapi目录在放置回调activity:

?
1
2
3
4
5
6
<activity
android:name=".yxapi.yxentryactivity"
android:theme="@android:style/theme.translucent.notitlebar"
android:configchanges="keyboardhidden|orientation|screensize"
android:exported="true"
android:screenorientation="portrait" />

  客户端的操作回调,因此sharesdk也无法给予您操作回调。为了避免出错,请使用相对路径的方式,直接复制上面的代码到您的androidmanifest.xml中即可。

第五步:添加代码

  打开您项目的入口activity,在其oncreate中插入下面的代码: 如果使用sharesdk.xml方式配置调用

sharesdk.initsdk(this);

  如果使用代码配置应用注册信息或者应用后台配置应用注册信息,调用

sharesdk.initsdk(this,”androidv1101″);

  androidv1101:是你的应用在sharesdk注册应用信息时返回的appkey。 代码会初始化sharesdk,此后对sharesdk的操作都以此为基础。如果不在所有sharesdk的操作之前调用这行代码,会抛出空指针异常。

  效果图:

Android ShareSDK快速实现分享功能Android ShareSDK快速实现分享功能

Android ShareSDK快速实现分享功能Android ShareSDK快速实现分享功能