欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android ShareSDK快速实现分享功能

程序员文章站 2024-02-16 10:29:52
第一步 :获取sharesdk   为了集成sharesdk,您首先需要到sharesdk官方网站注册并且创建应用,获得sharesdk的appkey,然后到sdk的...

第一步 :获取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配置注册信息

<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配置文件

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中添加的内容不一样。但是首先您需要添加下面的权限列表:

<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:

<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,没有将会报错。

<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:

<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快速实现分享功能