Android中实现一键分享功能

在Android中开发中,我们会经常遇到使用一键分享的功能,今天我以使用第三方平台ShareSDK来实现一键分享向大家分享下具体的流程。


下面,我就以步骤顺序依次展示在自己的Android项目中如何实现
1.添加相应的Jar包,此处我添加了所有APP的jar文件:

Android中实现一键分享功能_第1张图片


2.在官网将下载的onekeyshare包添加到自己的工程目录main下。




3.将ShareSDK.xml文件添加到assets目录下。

Android中实现一键分享功能_第2张图片

<?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.sharesdk.cn"  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://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  -->   <ShareSDK  AppKey = "androidv1101"/> <!-- 修改成你在sharesdk后台注册的应用的appkey"-->   <SinaWeibo  Id="1"  SortId="1"  AppKey="568898243"  AppSecret="38a4f8204cc784f81f9f0daaf31e02e3"  RedirectUrl="http://www.sharesdk.cn"  Enable="true" />

    <TencentWeibo  Id="2"  SortId="2"  AppKey="801307650"  AppSecret="ae36f4ee3946e1cbb98d6965b0b2ff5c"  RedirectUri="http://sharesdk.cn"  Enable="true" />

    <QZone  Id="3"  SortId="3"  AppId="100371282"  AppKey="aed9b0303e3ed1e27bae87c33761161d"  Enable="true" />
    
    <!-- Wechat微信和WechatMoments微信朋友圈的appid是一样的;   注意:开发者不能用我们这两个平台的appid,否则分享不了   微信测试的时候,微信测试需要先签名打包出apk,  sample测试微信,要先签名打包,keystore在sample项目中,密码123456 -->  <Wechat  Id="4"  SortId="4"  AppId="wx4868b35061f87885"  Enable="true" />
    
    <WechatMoments  Id="5"  SortId="5"  AppId="wx4868b35061f87885"  Enable="true" />
        
   <WechatFavorite  Id="6"  SortId="6"  AppId="wx4868b35061f87885"  Enable="true" />
    
   <QQ  Id="7"  SortId="7"  AppId="100371282"  AppKey="aed9b0303e3ed1e27bae87c33761161d"  Enable="true" />
    
    <Facebook  Id="8"  SortId="8"  ConsumerKey="107704292745179"  ConsumerSecret="38053202e1a5fe26c80c753071f0b573"  Enable="true" />

    <Twitter  Id="9"  SortId="9"  ConsumerKey="mnTGqtXk0TYMXYTN7qUxg"  ConsumerSecret="ROkFqr8c3m1HXqS3rm3TJ0WkAJuwBOSaWhPbZ9Ojuc"  CallbackUrl="http://www.sharesdk.cn"  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" />
    
    <SohuMicroBlog  Id="14"  SortId="14"  ApiKey="SAfmTG1blxZY3HztESWx"  ConsumerKey="SAfmTG1blxZY3HztESWx"  ConsumerSecret="yfTZf)!rVwh*3dqQuVJVsUL37!F)!yS9S!Orcsij"  CallbackUrl="http://www.sharesdk.cn"  Enable="true" />
   
    <NetEaseMicroBlog  Id="15"  SortId="15"  ConsumerKey="T5EI7BXe13vfyDuy"  ConsumerSecret="gZxwyNOvjFYpxwwlnuizHRRtBRZ2lV1j"  RedirectUri="http://www.shareSDK.cn"  Enable="true" />
    
    <Douban  Id="16"  SortId="16"  ApiKey="02e2cbe5ca06de5908a863b15e149b0b"  Secret="9f1e7b4f71304f2f"  RedirectUri="http://www.sharesdk.cn"  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" />
        
    <!--  在中国大陆,印象笔记有两个服务器,一个是沙箱(sandbox),一个是生产服务器(china)。  一般你注册应用,它会先让你使用sandbox,当你完成测试以后,可以到  http://dev.yinxiang.com/support/上激活你的ConsumerKey,激活成功后,修改HostType  为china就好了。至于如果您申请的是国际版的印象笔记(Evernote),则其生产服务器类型为  “product”。   如果目标设备上已经安装了印象笔记客户端,ShareSDK允许应用调用本地API来完成分享,但  是需要将应用信息中的“ShareByAppClient”设置为true,此字段默认值为false。  -->  <Evernote  Id="19"  SortId="19"  HostType="sandbox"  ConsumerKey="sharesdk-7807"  ConsumerSecret="d05bf86993836004"  ShareByAppClient="true"  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="7janx53ilz11gbs"  AppSecret="c1hpx5fz6tzkm32"  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  Id="29"  SortId="29"  AppId="yx0d9a9f9088ea44d78680f3274da1765f"  Enable="true" />
   <!-- AppId="yx28eafabad0934f8d8d34a2a7238f53a0" -->   <YixinMoments  Id="30"  SortId="30"  AppId="yx0d9a9f9088ea44d78680f3274da1765f"  Enable="true" />

</DevInfor>



4.将如下两个string.xml文件添加到values目录下。

Android中实现一键分享功能_第3张图片

Android中实现一键分享功能_第4张图片

Android中实现一键分享功能_第5张图片




5.配置AndroidMainfest.xml文件:

  (1)所需要的权限:
<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.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>





  (2)配置一个Activity:  
<activity  android:name="cn.sharesdk.framework.ShareSDKUIShell"  android:theme="@android:style/Theme.Translucent.NoTitleBar"  android:configChanges="keyboardHidden|orientation"  android:screenOrientation="portrait"  android:windowSoftInputMode="stateHidden|adjustResize" >
    <!--  Adapter表示一个继承自cn.sharesdk.framework.authorize.AuthorizeAdapter的类,  这个类可以监听到页面的生命周期,也可以获取授权页面的各种UI控件。  开发者可以通过继承AuthorizeAdapter,重写其方法,并获取各种UI来自定义这个页面的行为。   If you want to change the page's title of auth, you should extends the AuthorizeAdapter  and set the below android:value  -->  <meta-data android:name="Adapter" android:value="cn.sharesdk.demo.MyAdapter" />

    <!--  Dropbox的SSO功能需要在此处添加一个对ACTION_VIEW事件的过滤器,其中的scheme是  “db-”前缀再开发者应用的加上appKey。如果此过滤器不设置,则不能完成SSO功能授权   The platform of Dropbox uses SSO that must set the below inter-filter  -->  <intent-filter>
        <data android:scheme="db-7janx53ilz11gbs" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE"/>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
6.在程序代码中启动ShareSDK:
   ShareSDK.initSDK(this);
7.创建OnekeyShare并设置参数:
   OnekeyShare oks = new OnekeyShare();
   oks.setNotification(R.drawable.ic_launcher, "ShareSDK demo");
   oks.setAddress("12345678901");
   oks.setTitle("ShareSDK title");//分享内容的标题
   oks.setTitleUrl("http://sharesdk.cn");//标题对应的网址,没有可以不设置
   oks.setText("ShareSDK text");//设置分享的文本内容
   oks.setImagePath(MainActivity.TEST_IMAGE);//设置分享照片的本地路径,如果没有可以不设置
   //设置分享照片的url地址,如果没有可以不设置。
   oks.setImageUrl("http://img.appgo.cn/imgs/sharesdk/content/2013/07/25/1374723172663.jpg");
   oks.setUrl("http://sharesdk.cn");//微信和易信的网络连接,如果没有可以不设置
   //人人平台特有的评论字段,如果没有可以不设置
   oks.setComment("comment");
   //程序的名称或者是站点的名称
   oks.setSite("site");
   //程序的名称或者是站点名称的链接
   oks.setSiteUrl("http://sharesdk.cn");
   //设置纬度
   oks.setLatitude(23.122619f);
   //设置精度
   oks.setLongitude(113.372338f);
   //设置是否直接分享
   oks.setSilent(false);
   //显示
   oks.show(MainActivity.this);
8.上面设置参数的方法只是前一种一种,其实还有第二种方式,就是获取相应的平台,然后设置监听器,当分享成功,失败,取消时系统会回掉相应的方法:
//给平台注册回掉事件 private void registerSharedSDKListener(){
    //获取腾讯微博平台
    Platform SinaWeiboPlatform = ShareSDK.getPlatform(this, SinaWeibo.NAME);
    Platform TencentWeiboPlatform = ShareSDK.getPlatform(this, TencentWeibo.NAME);
    SinaWeiboPlatform.setPlatformActionListener(new PlatformActionListener() {
        @Override
        public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
            //成功
        }

        @Override
        public void onError(Platform platform, int i, Throwable throwable) {
            //失败
        }

        @Override
        public void onCancel(Platform platform, int i) {
            //取消
        }
    });
}
到此为止,经过如上几步就可以轻松的搞定一键分享功能啦!
 
 


你可能感兴趣的:(android)