第一步 :获取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、快速生成项目
由于直接复制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的操作之前调用这行代码,会抛出空指针异常。
效果图: