安卓ShareSDK分享总结

一、前言

几乎所有的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" /> -->
    <!-- DropboxSSO功能需要在此处添加一个对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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 2 3 4 5 $sharesdk.shareContent($sharesdk.platformID.SinaWeibo, params, function (platform, state, shareInfo, error) { alert("state = " + state + "\nshareInfo = " + shareInfo + "\nerror = " + error); }); 一键分享 1 2 3 4 5 $sharesdk.oneKeyShareContent([$sharesdk.platformID.SinaWeibo, $sharesdk.platformID.TencentWeibo], params, function (platform, state, shareInfo, error) { alert("state = " + state + "\nshareInfo = " + shareInfo + "\nerror = " + error); }); 关于具体的分享参数名称,请参考“不同平台分享内容的详细说明”章节的说明。 用户授权 调用ShareSDK中的authorize方法可进行用户授权。代码如下: 1 2 3 4 5 $sharesdk.authorize($sharesdk.platformID.SinaWeibo, function (platform, state, error){ alert("state = " + state + "\nerror = " + error); }); 获取用户资料 调用ShareSDK中的getUserInfo来获取授权用户的信息。代码如下: 1 2 3 4 5 $sharesdk.getUserInfo($sharesdk.platformID.SinaWeibo, function (platform, state, user, error) { alert("state = " + state + "\nuser = " + user + "\nerror = " + error); }); iOS部分集成步骤(不发布iOS版本可略过此部分) 导入JS桥接的iOS版本组件 打开下载的JS包里的iOS/ShareSDKForJS/ShareSDKForJS.xcodeproj项目工程,选择ShareSDKForJS静态库运行Xcode,如图: 700px-js_doc_001.png 运行成功之后,请大家打开文件找到Build文件夹,然后进入文件中找到build/Products/Debug-iphonesimulato /libShareSDKForJS.a文件以及找到build/Products/Debug-iphonesimulator/usr/local /include/ShareSDKJSBridge.h这个文件,再将libShareSDKForJS.a和ShareSDKJSBridge.h这 2个文件导入到你的项目里,如图 700px-js_doc_002.png 注意:(如果在分享中弹不出分享的菜单,如果大家的ShareSDK.js文件是本地的,要把这个加到Build Phases里面的Copy Bundle Resources选项) 下载iOS版本ShareSDK,并导入到工程中。 登录ShareSDK的官方网站下载并解压最新版本的SDK。如果您还尚未下载,请 点击这里下载 或者访问 http://sharesdk.cn/Download 。解压后如图所示: 700px-js_doc_003 将ShareSDK导入工程中,并添加相应的依赖库。此步骤可以参考:《iOS快速集成指南》中的第一、第二步。执行完成后,如下图所示: 700px-js_doc_004.png 为UIWebView添加消息捕获 先导入ShareSDKJSBridge.h头文件。 1 #import "ShareSDKJSBridge.h" 然后给UIWebView设置一个委托对象,如: 1 webView.delegate = self; 注意:webView是UIWebView的对象实例。 最后实现shouldStartLoadWithRequest委托方法,并在方法中加入JSBridge的captureRequest方法,代码如下: 1 2 3 4 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { return ![[ShareSDKJSBridge sharedBridge] captureRequest:request webView:webView]; } 添加完毕后就可以对工程进行运行测试。 Android部分集成步骤(不发布Android版本可略过此部分) 导入的步骤如下: 1、参考”安卓快速集成文档“章节的说明,导入ShareSDK for Android的jar库和图片、文字资源。 2、复制github上的jsdemo项目中”cn.sharesdk.js”包中的源代码复制到你的项目中。QQ截图20150304142013 3、在您WebView加载页面地址之前。调用ShareSDKUtils.prepare(webview, webviewClient); 请注意,ShareSDKUtils.prepare方法要在WebView.setWebViewClient(WebViewClinet);之后调用,而且此后不能再调用setWebViewClient方法,否则ShareSDK的初始化操作可能失败。 下面的代码来自github上的demo: Objective-C 1 2 3 4 5 6 7 8 9 10 11 12 public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); WebView wvBody = new WebView(this); WebViewClient wvClient = new WebViewClient(); wvBody.setWebViewClient(wvClient); wvBody.setWebChromeClient(new WebChromeClient() { public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } });

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值