一、前言
几乎所有的Android应用都离不开分享这一个大功能,把自己的应用或者某条内容分享到各个社交平台对于宣传应用是非常必要的,市场上大部分的分享都是通过集成ShareSdk来实现的,这里就给大家总结下AndroidStudio集成ShareSdk的步骤,简单快捷,更加明了清晰。
二、集成步骤
1、添加ShareSdk依赖:将 compile 'com.zftlive.android.library:feature-android-sharesdk:1.0.0' 复制到app Module的dependencies中去
2、添加部分源码:步骤1中添加的依赖不包含ShareSdk中的核心类OnekeyShare.java,此类需要添加ShareSdk官网提供的部分源码,可从官网的demo中获取,官网地址:http://www.mob.com/,下载完成后可看到如下目录结构
3、添加权限:蓝牙权限可选择性添加,不需要蓝牙分享可不做添加
<!--分享权限--> <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" /> <!--蓝牙权限 --> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
4、配置manifests清单:此清单直接copy即可
<!--分享--> <activity android:name="com.mob.tools.MobUIShell" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:windowSoftInputMode="stateHidden|adjustResize"> <!-- AuthorizeAdapter表示一个继承自cn.sharesdk.framework.authorize.AuthorizeAdapter 的类,这个类可以监听到页面的生命周期,也可以获取授权页面的各种UI控件。 开发者可以通过继承AuthorizeAdapter,重写其方法,并获取各种UI来自定义这个页面的行为。 --> <meta-data android:name="AuthorizeAdapter" android:value="cn.sharesdk.demo.MyAdapter" /> <!-- QZoneWebShareAdapter表示一个继承自cn.sharesdk.tencent.qzone.QZoneWebShareAdapter 的类,这个类可以监听到页面的生命周期,也可以获QQ空间网页分享权页面的各种UI控件。 开发者可以通过继承QZoneWebShareAdapter,重写其方法,并获取各种UI来自定义这个页面的行为。 <meta-data android:name="QZoneWebShareAdapter" android:value="cn.sharesdk.demo.MyQZoneWebShareAdapter" /> <meta-data android:name="QQWebShareAdapter" android:value="cn.sharesdk.demo.MyQQWebShareAdapter" /> --> <!-- Dropbox的SSO功能需要在此处添加一个对ACTION_VIEW事件的过滤器,其中的scheme是 “db-”前缀再开发者应用的加上appKey。如果此过滤器不设置,则不能完成SSO功能授权 --> <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> <intent-filter> <data android:scheme="tencent100371282" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> <!-- 调用新浪原生SDK,需要注册的回调activity --> <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity>
5、添加ShareSdk.xml:这个xml中配置了你在各个平台注册的分享AppKey和AppSecret,只有在对应的平台获取到这些AppKey和AppSecret才可以成功分享,否则会出现各种分享闪屏、分享失败的提示,此xml文件需要放在assets目录下
6、在需要分享的地方调用分享功能代码:只需把分享代码里面的参数动态改成自己想分享的内容即可
/** * 演示调用ShareSDK执行分享 * * @param context * @param platformToShare 指定直接分享平台名称(一旦设置了平台名称,则九宫格将不会显示) * @param showContentEdit 是否显示编辑页 */ public void showShare(Context context, String platformToShare, boolean showContentEdit) { OnekeyShare oks = new OnekeyShare(); oks.setSilent(!showContentEdit); if (platformToShare != null) { oks.setPlatform(platformToShare); } //ShareSDK快捷分享提供两个界面第一个是九宫格 CLASSIC 第二个是SKYBLUE oks.setTheme(OnekeyShareTheme.CLASSIC); // 令编辑页面显示为Dialog模式 oks.setDialogMode(); // 在自动授权时可以禁用SSO方式 oks.disableSSOWhenAuthorize(); //oks.setAddress("12345678901"); //分享短信的号码和邮件的地址 oks.setTitle("ShareSDK--Title"); oks.setTitleUrl("http://mob.com"); oks.setText("ShareSDK--文本"); //oks.setImagePath("/sdcard/test-pic.jpg"); //分享sdcard目录下的图片 oks.setImageUrl("http://99touxiang.com/public/upload/nvsheng/125/27-011820_433.jpg"); oks.setUrl("http://www.mob.com"); //微信不绕过审核分享链接 //oks.setFilePath("/sdcard/test-pic.jpg"); //filePath是待分享应用程序的本地路劲,仅在微信(易信)好友和Dropbox中使用,否则可以不提供 oks.setComment("分享"); //我对这条分享的评论,仅在人人网和QQ空间使用,否则可以不提供 oks.setSite("ShareSDK"); //QZone分享完之后返回应用时提示框上显示的名称 oks.setSiteUrl("http://mob.com");//QZone分享参数 oks.setVenueName("ShareSDK"); oks.setVenueDescription("This is a beautiful place!"); // 将快捷分享的操作结果将通过OneKeyShareCallback回调 //oks.setCallback(new OneKeyShareCallback()); // 去自定义不同平台的字段内容 //oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo()); // 在九宫格设置自定义的图标 Bitmap logo = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher); String label = "ShareSDK"; View.OnClickListener listener = new View.OnClickListener() { public void onClick(View v) { } }; oks.setCustomerLogo(logo, label, listener); // 为EditPage设置一个背景的View //oks.setEditPageBackground(getPage()); // 隐藏九宫格中的新浪微博 // oks.addHiddenPlatform(SinaWeibo.NAME); // String[] AVATARS = { // "http://99touxiang.com/public/upload/nvsheng/125/27-011820_433.jpg", // "http://img1.2345.com/duoteimg/qqTxImg/2012/04/09/13339485237265.jpg", // "http://diy.qqjay.com/u/files/2012/0523/f466c38e1c6c99ee2d6cd7746207a97a.jpg", // "http://diy.qqjay.com/u2/2013/0422/fadc08459b1ef5fc1ea6b5b8d22e44b4.jpg", // "http://img1.2345.com/duoteimg/qqTxImg/2012/04/09/13339510584349.jpg", // "http://diy.qqjay.com/u2/2013/0401/4355c29b30d295b26da6f242a65bcaad.jpg" }; // oks.setImageArray(AVATARS); //腾讯微博和twitter用此方法分享多张图片,其他平台不可以 // 启动分享 oks.show(context); }
三、总结
1、上述步骤在ShareSdk官网都能找到,只是官网给出的步骤太乱了,这里只是给大家总结出最快速继承分享的步骤
2、若不在assets目录下添加ShareSdk.xml也可实现分享,只不过在调取分享平台时无法调取分享平台的客户端模式,只能调取到网页模式
3、ShareSdk.xml中所有使用到的AppKey和AppSecret都是官方给出的demo附带的,若想修改成自己的应用图标和应用名,需到指定的分享平台申请自己应用所对应的AppKey和AppSecret
4、最后奉上源码demo地址:https://github.com/Knight2016/ShareSdkDemo