关于android分享(sharedsdk的简单使用)

Posted cynchanpin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于android分享(sharedsdk的简单使用)相关的知识,希望对你有一定的参考价值。

老早就使用了。可是如今才写,惰性太大,如今改

如今做产品的话相信大家基本都做分享吧。一个是项目的需求须要,另一个是能够非常好的宣传自己的产品。其它的优点依据情况而论

事实上每一个平台都有它自己的文档,可是假设做产品赶进度的话。或者说一些不可控的因素的话,而使用到sharedsdk的话。那我简单说一下

首先,来看一下sharedsdk的官网:http://mob.com/#/index

假设要使用的话须要去注冊,博主这里注冊了,再在这说一下,假设是公司的话。须要用公司的帐号加入应用,由于涉及到后台的统计

技术分享

这个是基本的三个,并且分享的jar包里面已经集成了第三方登陆了,来说一下详细使用,肯定是要先去对应的地址下东西,嘿嘿

技术分享

这个有sdk和demo,还有集成文档,我感觉大家能够不用下demo的。直接下载sdk然后看集成文档,基本就能搞定,博主原来用的时候事实上有bug的,有个类里面的引用不正确,可是集成文档版本号比較老,如今好了,文档说的非常具体

这个sdk下载下载是.tar.gz格式的,博主用360压缩死活打不开,每次都是。并且博主还是每次都用好压。由于下载360直接推荐下了好多软件。打不开的话首先就得想怎么打开,事实上去掉.gz就能够了,可是这事实上不应该是结束,应该想一下为什么,事实上这个压缩包在mac里面是能够打开的,主要是博主一直用的windows,其它的没用写过代码,这种话大家应该能够理解了吧。事实上兼容问题

好下载下来看看是什么东西

技术分享

依据名字的话应该是一个client一个是服务端。服务端博主没有细致研究过,说一下android端。技术分享

大家可能会发现。jar包。唉,又默认成压缩包了,事实上应该用java se打开的,然后勾选须要的平台

技术分享

这里的项目包名能够去清单文件中面获取,必需要相应,然后项目名称能够自定义下。确定后相应的文件,以及文件路径都会生成在那个jar包的根文件夹下

剩下的便是新建对应的文件夹。然后把对应的包放进去,博主用的as,这里着重说一下须要注意的。eclipse貌似问题要少点

技术分享

就是这个assets是在这个路径下的。再有就是假设集成短信功能的话还须要一个lib文件夹和eclipse不一样,jnilibs应该和java放在同一个文件夹下

技术分享

还有就是as编译比較严格。里面有些关于百度贴吧的编译是通只是的。所有注掉。另一个文件须要干掉,不然编译也是会出错的,再有就是没有英文命名的string,不是做国际化的须要加上一行代码。进行强制编译

<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">


eclipse貌似不会提示错误,可是as必须加上再有就是关于刷新的话,有些命名是反复的,须要注掉

<string name="app_name">laugh</string>
    <string name="hello_world">Hello world!</string>
    <string name="action_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
    <!-- <string name="pull_to_refresh">下拉刷新</string> -->
    <!-- <string name="release_to_refresh">释放马上刷新</string> -->
    <!-- <string name="refreshing">正在刷新...</string> -->
    <string name="refresh_succeed">刷新成功</string>
    <string name="refresh_fail">刷新失败</string>
    <string name="pullup_to_load">上拉载入很多其它</string>
    <string name="release_to_load">释放马上载入</string>

这样编译的话能够全然ok了,然后看一下ShareSDK.xml里面是什么东西

<?xml version="1.0" encoding="utf-8"?>
<DevInfor>
    <!--
    	说明:
    	
    	1、表格中的第一项
    		<ShareSDK 
        		AppKey="api20" />
    	是必须的。当中的AppKey是您在ShareSDK上注冊的开发人员帐号的AppKey
    	
    	2、全部集成到您项目的平台都应该为其在表格中填写相相应的开发人员信息。以新浪微博为例:
    	    <SinaWeibo
                Id="1"
                SortId="1"
                AppKey="568898243"
                AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"
                RedirectUrl="http://www.mob.com"
                Enable="true" />
    	当中的SortId是此平台在分享列表中的位置,由开发人员自行定义,能够是不论什么整型数字,数值越大
    	越靠后AppKey、AppSecret和RedirectUrl是您在新浪微博上注冊开发人员信息和应用后得到的信息
    	Id是一个保留的识别符,整型,ShareSDK不使用此字段,供您在自己的项目中当作平台的识别符。
    	Enable字段表示此平台是否有效。布尔值。默觉得true,假设Enable为false,即便平台的jar包
    	已经加入到应用中,平台实例依旧不可获取。

各个平台注冊应用信息的地址例如以下: 新浪微博 http://open.weibo.com 腾讯微博 http://dev.t.qq.com QQ空间 http://connect.qq.com/intro/login/ 微信好友 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://developer.linkedin.com 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 易信好友 http://open.yixin.im/ 明道 http://open.mingdao.com/ Line http://media.line.me/zh-hant/ Pocket http://getpocket.com/developer/apps/new --> <ShareSDK AppKey = "androidv1101"/> <!-- 改动成你在sharesdk后台注冊的应用的appkey"--> <!-- ShareByAppClient标识是否使用微博client分享,默认是false --> <SinaWeibo Id="1" SortId="1" AppKey="568898243" AppSecret="38a4f8204cc784f81f9f0daaf31e02e3" RedirectUrl="http://www.sharesdk.cn" ShareByAppClient="false" Enable="true" /> <TencentWeibo Id="2" SortId="2" AppKey="801307650" AppSecret="ae36f4ee3946e1cbb98d6965b0b2ff5c" RedirectUri="http://sharesdk.cn" Enable="true" /> <!-- ShareByAppClient标识是否使用微博client分享。默认是false --> <QZone Id="3" SortId="3" AppId="100371282" AppKey="aed9b0303e3ed1e27bae87c33761161d" ShareByAppClient="false" Enable="true" /> <!-- Wechat微信和WechatMoments微信朋友圈的appid是一样的。 注意:开发人员不能用我们这两个平台的appid,否则分享不了 微信測试的时候,微信測试须要先签名打包出apk, sample測试微信,要先签名打包,keystore在sample项目中。password123456 BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过 审核的应用也能够运行分享,可是仅限于分享文字和图片,不能分享其它类型, 默认值为false。

此外。微信收藏不支持此字段。 --> <Wechat Id="4" SortId="4" AppId="wx4868b35061f87885" AppSecret="64020361b8ec4c99936c0e3999a9f249" BypassApproval="false" Enable="true" /> <WechatMoments Id="5" SortId="5" AppId="wx4868b35061f87885" AppSecret="64020361b8ec4c99936c0e3999a9f249" BypassApproval="false" Enable="true" /> <WechatFavorite Id="6" SortId="6" AppId="wx4868b35061f87885" AppSecret="64020361b8ec4c99936c0e3999a9f249" Enable="true" /> <!-- ShareByAppClient标识是否使用微博client分享。默认是false --> <QQ Id="7" SortId="7" AppId="100371282" AppKey="aed9b0303e3ed1e27bae87c33761161d" ShareByAppClient="true" Enable="true" /> <Facebook Id="8" SortId="8" ConsumerKey="107704292745179" ConsumerSecret="38053202e1a5fe26c80c753071f0b573" RedirectUrl="http://mob.com" Enable="true" /> <Twitter Id="9" SortId="9" ConsumerKey="LRBM0H75rWrU9gNHvlEAA2aOy" ConsumerSecret="gbeWsZvA9ELJSdoBzJ5oLKX0TU09UOwrzdGfo9Tg7DjyGuMe8G" CallbackUrl="http://mob.com" Enable="true" /> <Renren Id="10" SortId="10" AppId="226427" ApiKey="fc5b8aed373c4c27a05b712acba0f8c3" SecretKey="f29df781abdd4f49beca5a2194676ca4" Enable="true" /> <KaiXin Id="11" SortId="11" AppKey="358443394194887cee81ff5890870c7c" AppSecret="da32179d859c016169f66d90b6db2a23" RedirectUri="http://www.sharesdk.cn" Enable="true" /> <Email Id="12" SortId="12" Enable="true" /> <ShortMessage Id="13" SortId="13" Enable="true" /> <Douban Id="16" SortId="16" ApiKey="031a96a3aa8b28af094fc3eaffa17a0d" Secret="2e675e730571b75d" RedirectUri="http://mob.com" Enable="true" /> <YouDao Id="17" SortId="17" HostType="product" ConsumerKey="dcde25dca105bcc36884ed4534dab940" ConsumerSecret="d98217b4020e7f1874263795f44838fe" RedirectUri="http://www.sharesdk.cn/" Enable="true" /> <SohuSuishenkan Id="18" SortId="18" AppKey="e16680a815134504b746c86e08a19db0" AppSecret="b8eec53707c3976efc91614dd16ef81c" RedirectUri="http://sharesdk.cn" Enable="true" /> <!-- 在中国大陆,印象笔记有两个server。一个是沙箱(sandbox),一个是生产server(china)。

一般你注冊应用,它会先让你使用sandbox,当你完毕測试以后,能够到 http://dev.yinxiang.com/support/上激活你的ConsumerKey,激活成功后。改动HostType 为china就好了。至于假设您申请的是国际版的印象笔记(Evernote)。则其生产server类型为 “product”。 假设目标设备上已经安装了印象笔记client,ShareSDK同意应用调用本地API来完毕分享。但 是须要将应用信息中的“ShareByAppClient”设置为true,此字段默认值为false。 --> <Evernote Id="19" SortId="19" HostType="sandbox" ConsumerKey="sharesdk-7807" ConsumerSecret="d05bf86993836004" ShareByAppClient="false" Enable="true" /> <LinkedIn Id="20" SortId="20" ApiKey="ejo5ibkye3vo" SecretKey="cC7B2jpxITqPLZ5M" RedirectUrl="http://sharesdk.cn" Enable="true" /> <GooglePlus Id="21" SortId="21" Enable="true" /> <FourSquare Id="22" SortId="22" ClientID="G0ZI20FM30SJAJTX2RIBGD05QV1NE2KVIM2SPXML2XUJNXEU" ClientSecret="3XHQNSMMHIFBYOLWEPONNV4DOTCDBQH0AEMVGCBG0MZ32XNU" RedirectUrl="http://www.sharesdk.cn" Enable="true" /> <Pinterest Id="23" SortId="23" ClientId="1432928" Enable="true" /> <Flickr Id="24" SortId="24" ApiKey="33d833ee6b6fca49943363282dd313dd" ApiSecret="3a2c5b42a8fbb8bb" RedirectUri="http://www.sharesdk.cn" Enable="true" /> <Tumblr Id="25" SortId="25" OAuthConsumerKey="2QUXqO9fcgGdtGG1FcvML6ZunIQzAEL8xY6hIaxdJnDti2DYwM" SecretKey="3Rt0sPFj7u2g39mEVB3IBpOzKnM3JnTtxX2bao2JKk4VV1gtNo" CallbackUrl="http://sharesdk.cn" Enable="true" /> <Dropbox Id="26" SortId="26" AppKey="i5vw2mex1zcgjcj" AppSecret="3i9xifsgb4omr0s" RedirectUri="https://www.sharesdk.cn" Enable="true" /> <VKontakte Id="27" SortId="27" ApplicationId="3921561" Enable="true" /> <Instagram Id="28" SortId="28" ClientId="ff68e3216b4f4f989121aa1c2962d058" ClientSecret="1b2e82f110264869b3505c3fe34e31a1" RedirectUri="http://sharesdk.cn" Enable="true" /> <!-- Yixin易信和YixinMoments易信朋友圈的appid是一样的; 注意:开发人员不能用我们这两个平台的appid,否则分享不了 易信測试的时候须要先签名打包出apk, sample測试易信,要先签名打包,keystore在sample项目中,password123456 BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过 审核的应用也能够运行分享,可是仅限于分享文字或图片,不能分享其它类型。 默认值为false。

--> <Yixin Id="29" SortId="29" AppId="yx0d9a9f9088ea44d78680f3274da1765f" BypassApproval="true" Enable="true" /> <YixinMoments Id="30" SortId="30" AppId="yx0d9a9f9088ea44d78680f3274da1765f" BypassApproval="true" Enable="true" /> <Mingdao Id="31" SortId="31" AppKey="EEEE9578D1D431D3215D8C21BF5357E3" AppSecret="5EDE59F37B3EFA8F65EEFB9976A4E933" RedirectUri="http://sharesdk.cn" Enable="true" /> <Line Id="32" SortId="32" Enable="true" /> <KakaoTalk Id="33" SortId="33" AppKey="48d3f524e4a636b08d81b3ceb50f1003" Enable="true" /> <KakaoStory Id="34" SortId="34" AppKey="48d3f524e4a636b08d81b3ceb50f1003" Enable="true" /> <WhatsApp Id="35" SortId="35" Enable="true" /> <Bluetooth Id="36" SortId="36" Enable="true" /> <Pocket Id="37" SortId="37" ConsumerKey="32741-389c565043c49947ba7edf05" Enable="true" /> <Instapaper Id="38" SortId="38" ConsumerKey="4rDJORmcOcSAZL1YpqGHRI605xUvrLbOhkJ07yO0wWrYrc61FA" ConsumerSecret="GNr1GespOQbrm8nvd7rlUsyRQsIo3boIbMguAl9gfpdL0aKZWe" Enable="true" /> <FacebookMessenger Id="39" SortId="39" ConsumerKey="107704292745179" ConsumerSecret="38053202e1a5fe26c80c753071f0b573" RedirectUrl="http://mob.com" Enable="true" /> </DevInfor>


里面都是自带的,我大致说一下是什么,对应的key是须要公司依据对应的签名去审核获取,分享的话QQ空间,微信朋友圈用他的測试即可,假设是分享给QQ群,个人,微信个人是会打上对应的标的,用过就知道了,假设涉及到这些keyi在公布前一定要用自己的进行測试。公布要公布自己的应用。这里略微说一下第三方授权登录。就是假设申请的对应的key和你的应用签名不一样的话肯定是上不了的,打包的时候一定要打release包,不要打debug包。debug是没有签名的,最好用实体机进行測试,再来就是该基本的了。怎么调用分享代码

protected void showShare() {
        ShareSDK.initSDK(getActivity());
        OnekeyShare oks = new OnekeyShare();
        //关闭sso授权
        oks.disableSSOWhenAuthorize();

        // 分享时Notification的图标和文字  2.5.9以后的版本号不调用此方法
        //oks.setNotification(R.drawable.ic_launcher, getString(R.string.app_name));
        // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
        oks.setTitle(getString(R.string.share));
        // titleUrl是标题的网络链接,仅在人人网和QQ空间使用
        oks.setTitleUrl("http://sharesdk.cn");
        // text是分享文本,全部平台都须要这个字段
        oks.setText("我是分享文本");
        // imagePath是图片的本地路径,Linked-In以外的平台都支持此參数
        oks.setImagePath("/sdcard/test.jpg");//确保SDcard以下存在此张图片
        // url仅在微信(包含好友和朋友圈)中使用
        oks.setUrl("http://sharesdk.cn");
        // comment是我对这条分享的评论,仅在人人网和QQ空间使用
        oks.setComment("我是測试评论文本");
        // site是分享此内容的站点名称,仅在QQ空间使用
        oks.setSite(getString(R.string.app_name));
        // siteUrl是分享此内容的站点地址,仅在QQ空间使用
        oks.setSiteUrl("http://sharesdk.cn");

        // 启动分享GUI
        oks.show(getActivity());
    }

这个是在fragment里面调用的,activity一类的(actionbaractivity,FragmentActivity)换成this就能够了。事实上以上的一些set方法都是经常使用的,另一些能够点出来

技术分享

好多东西等着你去发掘,嘿嘿,就简介到这里了,基本全部分享功能都能使用了,第三方授权稍后再说

----------------------------------------------------------切割线---------------------------------------------------------------------------------------------------------------------------

这里也有一个问题。非常现实。但是也非常困扰人。就是关于集成的问题,有人说怎么什么都想着集成啊,但是能够考虑一下,让你一个人两个月开发一款app,那么这些工具类的东西,难道每次都去查对应的官方api去自己写?换句话说,我相信有些厉害的程序猿肯定会自己封装了一个底层框架吧,或者把框架里面的东西都单出来,然后存到github上,用什么就下载来copy改改,不可能每次都去查api再去一点一点写吧,尤其不是核心的代码,仅仅是工具而已,我是这样觉得,个人观点












以上是关于关于android分享(sharedsdk的简单使用)的主要内容,如果未能解决你的问题,请参考以下文章

短信登录集成三步骤-sharedSdk

facebook第三方登陆(使用sharedSDK)无法加载网址:这个URL的域名未包含应用的域名

五种设计模式的分享

关于Android开发导航app源码分享

分享一点关于Android屏幕适配的种种

分享一篇关于“Android源码”下载的过程