android 集成所有分享平台

2019-03-02 01:07|来源: 网路

注意: 本文介绍的是Share SDK 2.x版本的集成流程和注意事项,对于Share SDK 1.x版本的开发者,请参考2.0升级指南升级SDK以后,再阅读本文

目录

 [隐藏

1  第一步 :获取Share SDK

为了集成Share SDK,您首先需要到Share SDK官方网站注册并且创建应用,获得ShareSDK的Appkey,然后到SDK的下载页面下载SDK的压缩包,解压以后可以得到如下图的目录结构: wiki and fi 1.png

2  第二步:导入Share SDK

Share SDK有两种集成方式:1、直接复制jar包到目标项目libs目录;2、项目引用。Sample用的是第一种方式 如果使用复制jar的方法,需要除了复制MainLibs/libs中的jar外,还需要复制MainLibs/res中图片和strings,否则会出现授权时找不到资源的问题。而且如果您的项目也集成了快捷分享,还需要复制OneKeyShare/src中的源码、OneKeyShare/res中的资源和OneKeyShare/libs下的android-support-v4的jar到您的项目中。对于直接复制jar和资源的方式,可以参考Share SDK的Sample项目。 由于直接复制jar包和资源的集成方式比较麻烦,Share SDK提供了快速集成的程序,在Windows下可以直接双击执行。这个程序会自动搜集集成SDK所需要的jar和资源,完成以后可以通过复制目标目录中的文件到您项目中覆盖,再修改快捷分享项目中对源码文件对R文件的引用就行了。极大简化了“直接复制jar和资源”这种集成方式的操作步骤。 wiki and fi 15.png 下面演示如何通过项目引用的方式集成Share SDK: 1)将Share SDK下的Libs目录解压,然后在Eclipse中,选择“文件”—“导入”,并选择“现有的工作空间”: wiki and fi 3.png 并在“下一步”的页面中,选择上文解压的Libs目录: wiki and fi 4.png 点击“确定”,Eclipse会自动找到Libs目录下的两个项目: wiki and fi 5.png 如果您不需要快捷分享功能,可以取消OneKeyhare项目的勾选,否则请按“确定”,导入项目。 2)被导入的两个项目默认是“Is Labrary”的,而且OneKeyhare也默认引用了MainLibs,所以您并不需要为这两个项目做更多的设置。但是如果您修改了它们的相对路径,使之不在同一目录下,则需要手动修改其引用方式。具体操作和下面步骤类似。 3)右键您的项目,选择“属性”。在弹出的窗口左侧选择“Android”,然后转至右下侧的“Library”中点击“Add”,分别选择“MainLibs”和“OneKeyhare”,然后保存设置,退出属性窗口。 wiki and fi 6.png 完成上述步骤,“刷新”并“清理”一下您的项目,若未提示错误,ShareSDK已经导入到您的项目中。如果控制台报错,应该是support-v4的jar重复的问题,删除你项目中的support-v4就行,接下来就是配置不同平台的应用信息和注册授权以及快捷分享的Activity了。 对于1.2.0以前已经集成Share SDK,现在要升级的开发者,可以参考“复制jar和资源文件”的方式来升级SDK,也可以将您libs中对Share SDK所引用的jar删除,然后依照上述的步骤重新引用。由于Share SDK 2.0并不兼容1.x的版本,因此会有一些代码需要改动。主要的修改原则是将所有包含“Weibo”名称的字段和方法,以“Platform”来替换;AbstractWeibo被拆分为两个,对于Share SDK而言的静态方法被分配到类ShareSDK中,其他的和具体平台操作有关的成员,被分配到类Platform中。更多的详细内容,可以参考我们Wiki上的2.0升级指南。 Share SDK的快捷分享只提供源码,并没有编译好的jar。MainLibs的libs目录中包含的是Share SDK的核心类库,不同的jar对应不同的平台,其对应关系可以参考后文的平台对应列表。对于大部分的开发者,这些平台并不都是需要的,这时候可以直接删除此目录下不需要平台的jar包即可,直到后续需求变更,需要添加新的平台,再复制新平台的jar到此目录下就行了。

3  第三步:添加应用信息

Share SDK有不同的应用信息配置方式。您可以在Share SDK的应用管理后台中配置,或者通过“assets/ShareSDK.conf”文件来配置,或者通过“ShareSDK.setXXXXXDevInfo”方法组来设置。开发者可以自行选择,不过这三种设置方式各有区别:第一种方式优先级别最高,可以实现“动态配置应用信息”的功能,但是一旦脱离网络,Share SDK可能无法运作;第二种方式是优先级最低的方式,但是它最为方便、集中;最后使用代码设置的方式是最灵活的方式,开发者可以在代码里面写死应用信息,也可以通过私有协议,从自己的服务器上动态获取应用信息,其优先级居第一种和第二种之间。下面介绍一下如何使用“assets/ShareSDK.conf”配置您项目的应用信息列表。 获取信息以后,将这些信息都存放在您项目的“assets/ShareSDK.conf”中。请到“Res”中将ShareSDK.conf复制到您项目的“assets”下,打开文件,然后根据不同的平台的数据,如下面的例子所示,替换您在这个平台上的开发者信息:

<ShareSDK    AppKey="填写您在Share SDK上注册到的AppKey" />
<SinaWeibo    SortId="此平台在您分享列表中的位置,整型,数值越大越靠后"    AppKey="填写您在新浪微博上注册到的AppKey"    AppSecret="填写您在新浪微博上注册到的AppSecret"    Id="自定义字段,整型,用于您项目中对此平台的识别符"    RedirectUrl="填写您在新浪微博上注册的RedirectUrl"    ShortLinkConversationEnable="布尔值,标记是否作短链转换"    Enable="布尔值,标记此平台是否有效" />

ShareSDK.conf以XML格式存储数据,每一个平台一个块,除了社交平台外,开发者在Share SDK注册应用时得到的Appkey需要填写在块“ShareSDK”中,如果此Appkey不是开发者自己的Appkey,则将来在Share SDK应用后台的统计数据将不正确。Share SDK的每一个平台都具备SortId、Id、ShortLinkConversationEnable和Enable四个字段,除此之外的字段(如新浪微博的AppKey、AppSecret、RedirectUrl等字段)需要到目标平台上注册应用以后得到,请正确填写这些字段的数据,否则Share SDK无法完成授权,则后续的其它操作也将无法执行。关于应用信息不同字段的更详细解释,可以参考ShareSDK.conf文件头部的说明。

4  第四步:配置AndroidManifest.xml

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

<uses-permission android:name="android.permission.GET_TASKS" /> <uses-permission android:name="android.permission.INTERNET" /> <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.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/>

这些权限将允许您的项目和Share SDK判断当前应用是否“前置”、获取连接网络的权限、获取您的设备网络状态的权限、实现https安全连接的权限、读取手机设备状态的权限和保存必要配置的权限。一般来说,即便不集成Share SDK,大部分的项目也都会注册申请这些权限。 其次,为了授权操作可以顺利完成,需要在application下注册下面的Activity:

<activity    android:name="cn.sharesdk.framework.ShareSDKUIShell"    android:theme="@android:style/Theme.Translucent.NoTitleBar"    android:configChanges="keyboardHidden|orientation|screenSize"    android:screenOrientation="portrait"    android:windowSoftInputMode="stateHidden|adjustResize" />

ShareSDKUIShell的路径是固定的,一定要在“cn.sharesdk.framework”下,因为它在Share-Core中。 最后,如果您的项目集微信或者微信朋友圈,则需要在application下注册下面的回调Activity:

<activity    android:name=".wxapi.WXEntryActivity"    android:theme="@android:style/Theme.Translucent.NoTitleBar"    android:configChanges="keyboardHidden|orientation|screenSize"    android:exported="true"    android:screenOrientation="portrait" />

这个类的路径是需要根据您项目的包名来确定,一般其路径是“您的包名. wxapi.WXEntryActivity”。如果路径错误,您将收不到微信客户端的操作回调,因此Share SDK也无法给予您操作回调。

5  第五步:添加代码

集成Share SDK需要至少在两个地方添加代码,包括: 1) 打开您项目的入口Activity,在其onCreate中插入下面的代码:

ShareSDK. initSDK ( this ) ;

这行代码会初始化Share SDK,此后对Share SDK的操作都依次为基础。如果不在所有Share SDK的操作之前调用这行代码,会抛出空指针异常。 2)在您项目的出口Activity的onDestroy方法的第一行插入下面的代码:

ShareSDK. stopSDK ( this ) ;

这行代码会结束Share SDK的统计功能并释放资源。如果这行代码没有被调用,那么“应用启动次数”的统计将不会准确,因为应用可能从来没有被关闭。 initSDK是可以重复调用的,其实Share SDK建议在您不确定的时候调用这个方法,来保证Share SDK被正确初始化。而stopSDK一旦调用了,就必须重新调用initSDK才能使用Share SDK的功能,否则会出现空指针异常。 至于如何调用授权、获取资料、分享等操作,请参考后续章节的说明。

6  备注一:微信的注册和签名

对于Share SDK的大部分平台,只要您参考上面的集成步骤引入到您的项目以后就可以开始进行工作了。但是对于微信的两个平台(微信好友和微信朋友圈)却不行。因为微信开放平台要求android的第三方开发者需要提供自己项目的包名和签名。下面简要叙述添加这些的操作流程: 1)您需要到微信开放平台上注册一个开发者账号,然后利用这个账号添加一个移动应用。 wiki and fi 7.png wiki and fi 8.png 应用创建出来以后,您会得到一个AppId,将这个Id添加到assets/ShareSDK.conf中。 wiki and fi 9.png 2)添加Android平台的信息。这些信息包括:下载地址、应用签名和包名。 wiki and fi 10.png 上图中的下载地址不可以是应用apk文件的直接地址,而报名则是您应用的包名。至于应用签名,事实上您应用签名文件(keystore文件)的MD5值。有多种计算方式: (1)使用微信提供的签名计算工具,来签名: 如果您希望通过这个方法来计算签名,则需要下载微信的签名计算工具。此处需要注意的是下载回来的文件一定是“apk”的,如果您下载回来的文件是zip或者后缀名,请修改其后缀名为“apk”,并复制到您的手机上安装。 然后为您的应用导出一个签过名的apk。请注意,这个签名应该是您将来发布应用时的签名,也就是所谓的“正式包签名”。这里需要解释一下,微信并不要求具体使用的签名文件的性质,但是修改签名经常会导致问题,所以为了避免不必要的麻烦,Share SDK强烈建议您使用正式包的签名。 安装导出的apk文件,然后运行微信的签名计算工具。并在其中输入您应用的包名,微信会自动计算您应用所签keystore的MD5: wiki and fi 11.png 转至微信开放平台,将计算好的结果填写到其中并保存。 (2)利用Eclipse导出签名时显示的签名MD5值: 利用此方法,要求您下载最新版本的Eclipse Android开发插件(ADT)。确保此条件后,右键您的项目,选择“Android Tools”—“Export Signed Application Package…”: wiki and fi 12.png 此时会弹出一个导出签名apk的窗口,输入您应用正式签名和密码以后,会在导出页面中,显示您签名的MD5值。将其复制出来,调整为小写,并去除多余的风格符。转至微信开放平台,将计算好的结果填写到其中并保存即可。 wiki and fi 13.png (3)Linux(Ubuntu)下,利用Shell直接计算: 如果您使用Ubuntu操作系统,可以直接利用下面的Shell命令计算出签名文件的MD5值: keytool -exportcert -alias <keystore别名> -keypass <别名密码> -keystore <keystore路径> -storepass <keystore密码> | md5sum 如: keytool -exportcert -alias demokey.keystore -keypass 123456 -keystore demokey.keystore -storepass 123456 | md5sum 其实出如下: wiki and fi 14.png 将其复制出来,转至微信开放平台,将计算好的结果填写到其中并保存即可。 完成上述的注册操作以后,将您的项目提交微信开放平台审核,审核通过以后,您的项目就可以开始调用微信客户端进行分享了。分享时,需要利用上文提到的keystore来给您的apk签名,签名以后放到您的机器上、安装,以后才能调用分享。不能直接在Eclipse上run,因为签名和包名都已经捆绑,若不是注册时填写的签名,微信客户端将拒绝请求。 为了演示分享功能Sample包中携带了一个"demokey.keystore"的keystore文件,其密码是“123456”,如果您在调试Sample项目的时候集成了微信的平台,就需要使用这个keystore对apk进行签名,之后才能尝试微信的分享。但是请注意:这个keystore已经和“cn.sharesdk.demo”这个包名捆绑,如果您的项目不使用这个包名,是不能直接使用这个keystore的

7  备注二:平台对应列表

下面是Share SDK当前所支持平台及其jar包的对应表[1]

平台 Jar包
新浪微博 ShareSDK-SinaWeibo.jar
腾讯微博 ShareSDK-TencentWeibo.jar
QQ ShareSDK-QQ.jar
QQ空间 ShareSDK-QZone.jar
微信好友[2] ShareSDK-Wechat.jar
微信朋友圈[2] ShareSDK-Wechat-Moments.jar
Facebook ShareSDK-Facebook.jar
Twitter ShareSDK-Twitter.jar
人人网 ShareSDK-Renren.jar
开心网 ShareSDK-KaiXin.jar
邮件 ShareSDK-Email.jar
信息 ShareSDK-ShortMessage.jar
搜狐微博 ShareSDK-SouhuMicroBlog.jar
网易微博 ShareSDK-NetEaseMicroBlog.jar
豆瓣 ShareSDK-Douban.jar
有道云笔记 ShareSDK-YouDao.jar
印象笔记 ShareSDK-Evernote.jar
Linkedin ShareSDK-Linkedin.jar
Google+ ShareSDK-GooglePlus.jar
FourSquare ShareSDK-Foursquare.jar
搜狐随身看 ShareSDK-SohuSuishenkan.jar
Flickr ShareSDK-Flickr.jar
Pinterest ShareSDK-Pinterest.jar
Tumblr ShareSDK-Tumblr.jar
Dropbox ShareSDK-Dropbox.jar
Instagram ShareSDK-Instagram.jar
VKontakte ShareSDK-VKontakte.jar

注: [1] 由于所有平台都依赖于ShareSDK-Core.jar,故此表略去每一项中的此包,以免冗余 [2] 微信的两个平台(微信好友和微信朋友圈)除了依赖ShareSDK-Core.jar外,还依赖ShareSDK-Wechat-Core.jar,使用的时候需注意不要遗漏。

8  备注三:应用信息注册地址列表

下面是Share SDK不同平台应用信息注册网站的地址[1]

平台 网站
新浪微博 http://open.weibo.com
腾讯微博 http://dev.t.qq.com
QQ空间[2] http://connect.qq.com/intro/login/
微信好友[3] http://open.weixin.qq.com
Facebook https://developers.facebook.com
Twitter https://dev.twitter.com
人人网 http://dev.renren.com
开心网 http://open.kaixin001.com
搜狐微博 http://open.t.sohu.com
网易微博 http://open.t.163.com
豆瓣 http://developers.douban.com
有道云笔记 http://note.youdao.com/open/developguide.html#app
印象笔记 https://dev.evernote.com/
Linkedin https://www.linkedin.com/secure/developer?newapp=
FourSquare https://developer.foursquare.com/
搜狐随身看 https://open.sohu.com/
Flickr http://www.flickr.com/services/
Pinterest http://developers.pinterest.com/
Tumblr http://www.tumblr.com/developers
Dropbox https://www.dropbox.com/developers
Instagram http://instagram.com/developer#
VKontakte http://vk.com/dev

注: [1] Email、信息和Google+不需要注册即可使用 [2] QQ客户端分享和QQ空间使用相同的应用信息配置页面 [3] 微信好友和微信朋友圈使用相同的注册信息 

 

 

 

                                                    

                            

来自“ http://wiki.sharesdk.cn/index.php?title=Android_快速集成指南&oldid=1570”                           

 

                                                                            

                            

 

                                                                        

 

 

                                                

                        

 

转自:http://www.cnblogs.com/clarence/p/3477186

相关问答

更多
  • 我是用MyEclipse7.0安装的, 不知道楼主用的哪个版本, 是Eclipse还是MyEclipse, 如果版本与ADT,SDK不兼容, 可能会出现没有Android选项的情况, 建议楼主先去SDK--tools这个文件夹里面找一个adb.exe的可执行文件, 如果没有该文件, 就还不能搭建, 造成该问题的原因可能是由于您下载的SDK版本太高,建议楼主从版本低的SDK开始用,搭建好开发环境以后可以慢慢升级,我现在用的是android-sdk-windows-1.5_r3这个版本的SDK,希望对楼主有所帮 ...
  • 也许你想要一个更完整的答案,因为被接受的答案很短,我已经太晚了但是希望它仍然有用:) 所以这是处理多个意图的可能解决方案...... 1)您想知道意图的结果(例如成功或失败)? 只需使用以下行启动意图: startActivityForResult(intent, 1); //instead of startActivity(intent) 并通过重写onActivityResult来检索requestCode和resultCode: @Override public void onActivityRes ...
  • 有很多插件可用于此。 我在https://github.com/phonegap/phonegap-plugins上找到了一些东西。 希望这会奏效。 但您需要正确执行相应插件的自述文件中提到的步骤。 there are lot of plugins are available for this. i found something on https://github.com/phonegap/phonegap-plugins. hope this will work. but you need to do ...
  • 可能是因为您只注册了MULTIPLE意图。 尝试添加此intent过滤器: Might be because you ar ...
  • 1)Android示例使用Google Play服务,我刚刚意识到它还没有推出。 2)虽然存在完全驱动器访问的授权范围https://developers.google.com/drive/scopes#requesting_full_drive_scope_for_an_app但是所有的Drive API似乎都是基于Web的,我认为设备OAuth令牌不会起作用,尤其是此页面上的警告https://developers.google.com/drive/register : 重要提示:在标有OAuth客户端 ...
  • 之前已经问过类似的问题,我建议你先阅读以下页面: 如何在Android上使用OpenCL? Android支持OpenCL吗? 基本上,您需要注意以下事项: Android上的OpenCL并未得到Google的正式支持。 因此,您可能会看到某些Android设备上不支持OpenCL。 虽然到目前为止,大多数旗舰设备都支持OpenCL,例如配备Qualcomm / Samsung芯片组的设备(除了谷歌Nexus设备,但有一些Nexus设备的解决方法,请谷歌在线)。 如果您清楚地知道您的应用只能在支持OpenC ...
  • **编辑:2017年7月** Dropbox API v1现已弃用,因此我们必须使用API v2进行迁移 时间线 2016年6月28日 :API v1已弃用。 2016年9月28日 :如果您尚未确认弃用,您的应用的新用户将在链接其Dropbox帐户时看到警告。 2017年3月28日 :如果您尚未确认已弃用,那么所有将Dropbox帐户链接到您的应用的用户都将收到一封警告电子邮件。 2017年6月28日 :API v1端点已关闭。 根据时间线,现在api v1不再工作,api v2完全激活。 目前'com.d ...
  • 您正在尝试共享链接,但您正在使用该代码共享设备上的视频。 请看看 https://developers.facebook.com/docs/sharing/android 并尝试使用代码来共享链接 ShareLinkContent content = new ShareLinkContent.Builder() .setContentUrl(Uri.parse("https://developers.facebook.com")) .build(); 请注意您必须使用Fac ...
  • 如果你正在使用facebook android API,你应该这样做 private Facebook mFacebook; private String mMessageToPost; ... function postToWall(urMessageAndLink) { Bundle parameters = new Bundle(); parameters.putString("me ...
  • 您无法从其他应用程序将图像发布到Instagram。 以下是最底层的一些文字: http : //instagram.com/developer/endpoints/media/ 目前,无法通过API上传。 我们有意识地选择不添加此内容,原因如下: Instagram是关于你在旅途中的生活 - 我们希望鼓励应用程序内的照片。 但是,将来我们可能会根据具体情况授予白名单访问个人应用程序的权限。 我们想要打击垃圾邮件和低质量的照片。 一旦我们允许从其他来源上传,就很难控制Instagram生态系统中的内容。 所 ...