1. Android 中如何集成vk官方平台分享
就是将一些文本分享给你的微信好友或者微信的朋友圈。
由于之前有过做新浪微博、qq、人人网第三方登录的经验,所以我很自然的就去微信的开发者平台去下SDK,注册我的应用。麻烦的事情就来了。
微信的官方demo想运行起来真心难啊,而且官网上面居然资料很少。坑。。。。。。。。
运行微信的官方demo
下面我来说一下运行微信的官方demo:
首先去开发者平台的资源中心-->点击资源下载-->选择android资源下载-->下载范例代码(HelloWeixin@Android)。
1、将该项目导入eclipse。
2、导入的目录结构
3、现在运行肯定不行的。点击Windows-->Preference
将demo中自带的debug.keystore的路径写入到Custom debug deystore.
4、现在就可以运行了。
我真是服了微信了,做的简直不人性化。用官方的集成简直就是要命。
为什么要设置Custom debug deystore??
因为微信有自身的限制。它需要你在注册该应用的时候,填写应用签名,这个签名就是你要最终打包发布使用的签名的加密MD5值。具体就是你先用这个签名打个包,然后在你的手机里面运行,然后在微信的官网下一个获取签名MD5值的工具(开发者平台-->资源中心-->资源下载-->android资源下载-->签名生成工具)。
官方的demo如果不设置这个Custom debug deystore,默认是使用eclipse提供的签名,这个签名和demo的本身的签名肯定不一致的。所以我们分享的时候是不成功的。
再吐槽一下,微信的接口写的真是奇葩,我分享不成功还返回ture,而且什么提示都没有,简直垃圾。
ShareSDK集成步骤
经历了这些,我以为应该可以自己集成了吧。可悲的是我整了两天都没成功分享。我确定了APPID、签名、应用包名、应用名称与注册的信息一模一样,TMD就是分享失败。最后没办法,我只能放弃了官方的SDK,使用了ShareSDK集成。
不得不说真心强大。微信、易信、微博都可以集成。官网地址:http://mob.com/
点开选择SDK下载-->ShareSDK社会化分享-->ShareSDK For Android.
强大的一笔。刚看见这个的时候不知从哪边下手。
然后参考http://wiki.mob.com/Android_ShareSDK%E5%AE%8C%E6%95%B4%E7%9A%84%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3
这个集成文档,基本就可以搞定了。大致说一下步骤:
首先必须要在ShareSDK里面注册你的应用,非常简单的,只填写基本信息就行,一路next获取Appkey、App Secret。
1、下载SDK页面选择"打包下载SDK",这个下载的里面包含依赖的项目
将下载的文件解压得到:
http://blog.csdn.net/dalancon/article/details/39322159
2. mob中sharesdk for android v2.8.2怎么用
由于第一次使用,所以需要先进行新浪授权,授权界面下面开始介绍如何使用ShareSDK实现微博的分享功能(其他平台的类似)shareSDK传送门在使用shareSDK之前,我们需要先到新浪微博的开放平台进行注册,获得appkey以及其他的信息新浪微博开放平台传送门下面图片中划掉的部分是要重点关注的特别需要注意的是,下面的回调网址必须填写,而且在代码中有涉及,使用默认的即可至此,开发之前的准备工作已经做好了,下面还是贴代码首先看一下布局文件代码,很简单,只有一个按钮06.07.12.13.MainActivity.javapackagecom.heli17.weiboonekeylogin;002.003.importjava.io.File;004.importjava.io.FileOutputStream;005.importjava.util.HashMap;006.007.importandroid.app.Activity;008.importandroid.app.Notification;009.importandroid.app.NotificationManager;010.importandroid.app.PendingIntent;011.importandroid.content.Context;012.importandroid.content.Intent;013.importandroid.graphics.Bitmap;014.importandroid.graphics.Bitmap.CompressFormat;015.importandroid.graphics.BitmapFactory;016.importandroid.os.Bundle;017.importandroid.os.Environment;018.importandroid.os.Handler.Callback;019.importandroid.os.Message;020.importandroid.view.View;021.importandroid.widget.Toast;022.importcn.sharesdk.framework.Platform;023.importcn.sharesdk.framework.PlatformActionListener;024.importcn.sharesdk.framework.ShareSDK;025.importcn.sharesdk.framework.utils.UIHandler;026.importcn.sharesdk.onekeyshare.OnekeyShare;027.028.,029.Callback{030.031.privatestaticfinalintMSG_TOAST=1;032.privatestaticfinalintMSG_ACTION_CCALLBACK=2;033.privatestaticfinalintMSG_CANCEL_NOTIFY=3;034.035.//sdcard中的图片名称036.privatestaticfinalStringFILE_NAME="/share_pic.jpg";037.publicstaticStringTEST_IMAGE;[email protected](Messagemsg){041.switch(msg.what){042.caseMSG_TOAST:{043.Stringtext=String.valueOf(msg.obj);044.Toast.makeText(MainActivity.this,text,Toast.LENGTH_SHORT).show();045.}046.break;047.caseMSG_ACTION_CCALLBACK:{048.switch(msg.arg1){049.case1://成功后发送Notification050.showNotification(2000,"分享完成");051.break;052.case2://失败后发送Notification053.showNotification(2000,"分享失败");054.break;055.case3://取消056.showNotification(2000,"取消分享");057.break;058.}059.}060.break;061.caseMSG_CANCEL_NOTIFY:062.NotificationManagernm=(NotificationManager)msg.obj;063.if(nm!=null){064.nm.cancel(msg.arg1);065.}066.break;067.}068.returnfalse;069.}[email protected](BundlesavedInstanceState){073.super.onCreate(savedInstanceState);074.setContentView(R.layout.activity_main);075.//初始化ShareSDK076.ShareSDK.initSDK(this);077.//初始化图片路径078.newThread(){079.publicvoidrun(){080.initImagePath();081.}082.}.start();083.}084.085.//一键分享的点击事件086.publicvoidclick(Viewv){087.//实例化一个OnekeyShare对象088.OnekeyShareoks=newOnekeyShare();089.//设置Notification的显示图标和显示文字090.oks.setNotification(R.drawable.ic_launcher,"ShareSDKdemo");091.//设置短信地址或者是邮箱地址,如果没有可以不设置092.oks.setAddress("12345678901");093.//分享内容的标题094.oks.setTitle("分享内容的标题");095.//标题对应的网址,如果没有可以不设置096.oks.setTitleUrl("");097.//设置分享的文本内容098.oks.setText("分享的文本内容");099.//设置分享照片的本地路径,如果没有可以不设置100.oks.setImagePath(MainActivity.TEST_IMAGE);101.//设置分享照片的url地址,如果没有可以不设置102.oks.setImageUrl("/imgs/sharesdk/content/2013/07/25/1374723172663.jpg");103.//微信和易信的分享的网络连接,如果没有可以不设置104.oks.setUrl("");105.//人人平台特有的评论字段,如果没有可以不设置106.oks.setComment("comment");107.//程序的名称或者是站点名称108.oks.setSite("site");109.//程序的名称或者是站点名称的链接地址110.oks.setSiteUrl("");111.//设置纬度112.oks.setLatitude(23.122619f);113.//设置精度114.oks.setLongitude(113.372338f);115.//设置是否是直接分享116.oks.setSilent(false);117.//显示118.oks.show(MainActivity.this);119.}120.121.privatevoidinitImagePath(){122.try{123.if(Environment.MEDIA_MOUNTED.equals(Environment124..getExternalStorageState())125.&&Environment.getExternalStorageDirectory().exists()){126.TEST_IMAGE=Environment.getExternalStorageDirectory()127..getAbsolutePath()+FILE_NAME;128.}else{129.TEST_IMAGE=getApplication().getFilesDir().getAbsolutePath()130.+FILE_NAME;131.}132.//创建图片文件夹133.Filefile=newFile(TEST_IMAGE);134.if(!file.exists()){135.file.createNewFile();136.Bitmappic=BitmapFactory.decodeResource(getResources(),137.R.drawable.pic);138.FileOutputStreamfos=newFileOutputStream(file);139.pic.compress(CompressFormat.JPEG,100,fos);140.fos.flush();141.fos.close();142.}143.}catch(Throwablet){144.t.printStackTrace();145.TEST_IMAGE=null;146.}147.}[email protected](){151.super.onDestroy();152.//在Activity中停止ShareSDK153.ShareSDK.stopSDK(this);154.}155.
3. sharemore怎么进
在官网上进入
具体步骤1.注册账号:
首先,我们需要在share sdk官网(http://www.mob.com)注册一个账号,然后登录,进入主界面
然后就是创建我们的应用了
在右上角点击“进入后台”
然后点击我们要使用的ShareSdk,
2添加应用:鼠标移动到“应用”菜单,选择添加应用,选择添加应用,然后先配置一下我们的APP
主要是一下几个步骤:
(1)获取ShareSDK的AppKey ,这个在我们创建好应用了之后就已经有了
(2)下载sdk
(3)快速集成
接下来我们用的还是sharesdk的测试账号进行分享
下面就说说如何在我们的项目中用自己的账号进行分享和登录(在这之前首先要保证在上面的测试中,分享是没有问题的,没有出现崩溃什么的,再进行我们的下一步)
4:一般我们的项目中集成的有QQ、微信、新浪,下面我们就说说在一个项目中如何使用这三种平台进行分享和登录
第一次用的时候也是走了不少坑,希望我的文章能帮助你少走一些坑,首先我们的项目一般很少是个人的,大部分都是公司项目,所以要在这三种平台进行分享
首先要分别在这三个平台注册一个企业账号(注意:填写企业信息的时候三个平台要保持一致
如果三个平台的企业信息不一致,后面的审核APP会有很多问题,到时候又要回去改,真的是很麻烦)
如果是个人,那你注册个人账号就可以了,下面我就用使用企业账号来举例
(1).腾讯开放平台http://wiki.open.qq.com上面说了,我们要先注册账号,并填写信息,并通过审核,才有使用QQ进行第三方操作的资质呀,资质有了,先来就是该创建我们的应用了。
点击“创建应用”
选择“移动应用 安卓”
点击“创建应用”
选择“安卓应用类型”,根据自己的APP类型,自己选择,点击“确定”
下面就是“完善信息”了,需要注意的就是我们上传的安装包,可能不符合腾讯审核的规则,这个时候要使用腾讯的第三方加固(以前还是要自己写命令加固的,现在都做成软件了,直接下载加固你的APP就行)
然后点击“提交审核”,大约需要1-2个工作日,耐心等待哈。通过审核了就可以得到我们需要的APP ID 和 APP REY
4. MobTech旗下的ShareSDK如何配置第三方key的方式(针对Android)
快速集成
下载MobTech旗下SDK产品ShareSDK的Unity3D工具类,双击或导入ShareSDK.unitypackage导入相关文件。 注意该操作可能会覆盖您原来已经存在的文件。
挂接ShareSDK脚本并配置平台信息
选择好需要挂接的GameObject(例如Main Camera),在右侧栏中点击Add Component,选择Share SDK 进行挂接。
挂接后会发现提供了当前支持的平台和及其配置信息。可以直接在此处修改你所需要的平台的配置信息。需要注意的是当前的编译环境是Android还是iOS,其字段名称是不同的哦!
Android编译配置
关键文件:mainTemplate.gradle和proguard-user.txt
Unity2017及以上版本,在Build Settings > Player Settings下面,有两个开关,新建项目的话打开这两个开关就可以在Plugins>Android生成对应的两个文件;由于这两个文件ShareSDK都有直接提供,只需导入.unitypackage就好,Unity检测到已经存在这两个文件,自动会更新为勾选状态;
Build的时候有一个Build System选项,此选项默认选择的Internal,切记要改成选择里面的gradle选项(重要)
图中所示的mainTemplate.gradle文件,即为集成的核心文件,使用编辑器打开此文件,要点内容如下:
此处为区分Unity5.6和Unity2017 gradle插件版本的地方,开发时用到哪个版本就使用哪个,若使用到其他Unity版本,请随意选择一个,然后build,编译的时候会报错的,Console控制台信息报错时会提示插件版本是多少,根据提示修改成需要的版本就好(只修改后面的数字,比如:2.3.0或者2.1.0)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.0'//Unity2017
//classpath 'com.android.tools.build:gradle:2.1.0'//Unity5.6
// 注册MobSDK
classpath 'com.mob.sdk:MobSDK:+'
}
}
5. Unity 微信登录分享ShareSDK对接流程
官方文档: MobTech ShareSDK文档
ShareSDK可用于多个平台登录和分享,无需再用服务端,本文主要介绍安卓端使用ShareSDK,进行微信登录和分享。
当时使用的是Unity2019.4.5,gradle版本4.0.0。
1、到微信开发平台申请创建应用,申请通过后获得appId,appSecret;
2、到MobTech平台创建应用,获得appKey,appSecret;
按照官方文档步骤对接即可;
1、launcherTemplate.gradle文件,把需要的各平台的appId和appSecret写在里面,在ShareSDKDevInfo.cs里面更改是无效的。
以微信平台为例:
2、如果微信应用正在申请,测试可使用Mob官方demo进行测试:
demo应用包名:cn.sharesdk.demo;
demokey.keystore密钥密码和别名密码,均为123456;
demo应用,Mob的appKey:moba0b0c0d0,appSecret:;
demo应用,微信的appId:wx4868b35061f87885,appSecret:;
3、不需要的平台,可以在ShareSDKDevInfo.cs里的DevInfoSet中注释掉;
1、场景中挂载ShareSDK.cs和MobSDK.cs;
2、使用前,必须要提交ShareSDK隐私协议的授权接口:
3、微信登录,使用ShareSDK的获取用户信息接口即可(只会在第一次跳转到第三方平台进行授权),返回结果包含openId,unionId,nickName等信息:
4、微信分享:
6. android sharesdk 分享成功执行的什么方法
使用ShareSDK步骤
1. ShareSDK官网,创建应用 获取Key
2. ShareSDK官网,下载SDK
3. 使ShareSDK的DEMO正常运行
(类库:ShareSDK for Android
demo:ShareSDK for Android Sample)
4.创建新的项目
5.去各平台注册key!
7. cocos2d-x3.2中怎么做ShareSdk的步骤
1、新建工程
2、下载sharesdk-cocos2dx-3.x版 和 android 、ios包
3、ios平台 --添加最新的sharesdk-ios
1-加入平台库
SystemConfiguration.framework ,
QuartzCore.framework ,
CoreTelephony.framework ,
libicucore.dylib ,
libz.1.2.5.dylib ,
Security.framework
libstdc++.dylib --qq和空间
libsqlite3.dylib --qq和空间
3⑴配置url schemes (新浪微博如果配置,则为sso免登录)
实力: QQ05FB8B52,wx4868b35061f87885
说明:
QQ的AppID,其格式为:”QQ” + AppId的16进制(如果appId转换的16进制数不够8位则在前面补0,如转换的是:5FB8B52,则终究填入为:QQ05FB8B52 注意:转换后的字母要大写)
在微信开放平台(http://open.weixin.qq.com/ )注册利用并获得利用的AppID,然后打开下图位置,在URL Types中添加微信AppID
配置新浪微博、Facebook的SSO(如不需要免帐号登录可跳过
登录新浪微博和facebook的开放平台,获得AppID 。新浪微博的url scheme的设置格式为wb+AppID,facebook的设置格式为fb+AppID。具体参考下图:
3⑵
添加短信分享、邮件分享、打印、拷贝(如不需要可跳过)
//连接短信分享
[ShareSDK connectSMS];
//连接邮件
[ShareSDK connectMail];
//连接打印
[ShareSDK connectAirPrint];
//连接拷贝
[ShareSDK connectCopy];
3⑶ ipad分享
功能接口创建1个容器对象并调用容器对象的setIPadContainer系列方法来设置iPad版显示容器。
1般而言,我们会建议使用1个比较小的、作为当前viewController 所控制的view 的subview 来作为“锚点”,来设置
container。例如1个已有的button。这样分享界面或授权界面才能正确显示。调用接口以下:
id<ISSContainer> container = [ShareSDK container];
[container setIPadContainerWithView:sender arrowDirect:UIPopoverArrowDirectionUp];
然后将container对象传入showShareActionSheet的第1个参数中,如:
//弹出分享菜单
[ShareSDK showShareActionSheet:container
shareList:nil
content:publishContent
statusBarTips:YES
authOptions:nil
shareOptions:nil
result:^(ShareType type, SSResponseState state,
id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo>
error, BOOL end) {
if (state == SSResponseStateSuccess)
{
NSLog(@"分享成功");
}
else if (state == SSResponseStateFail)
{
NSLog(@"分享失败,毛病码:%d,毛病描写:%@", [error errorCode], [error errorDescription]);
}
}];
4、导入跨平台包
修改:C2DXShareSDK.cpp
C2DXiOSShareSDK::open(CCString::createWithFormat("%s",appKey), useAppTrusteeship);
第2部:
AppController.mm
头文件
#import <ShareSDK/ShareSDK.h>
//微信
#import "WXApi.h"
//qq互联
#import <TencentOpenAPI/QQApiInterface.h>
#import <TencentOpenAPI/TencentOAuth.h>
在 didFinishLaunchingWithOptions 中
//导入微信
[ShareSDK importWeChatClass:[WXApi class]];
//导入qq互联
[ShareSDK importQQClass:[QQApiInterface class] tencentOAuthCls:[TencentOAuth class]];
处理handleOpenURL
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [ShareSDK handleOpenURL:url sourceApplication:nil annotation:nil wxDelegate:nil];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
return [ShareSDK handleOpenURL:url sourceApplication:sourceApplication annotation:annotation wxDelegate:nil];
}
--------------------------------------------
在AppDelegate.h中
private:
//初始化平台配置
void initPlatformConfig();
在AppDelegate.cpp中
头文件
#include "C2DXShareSDK.h"
using namespace cn::sharesdk;
init方法:
//初始化ShareSDK
C2DXShareSDK::open("api20", false);
//初始化社交平台信息
this->initPlatformConfig();
//新浪微博,qq和空间,微信
void AppDelegate::initPlatformConfig()
{
//新浪微博
__Dictionary *sinaConfigDict = __Dictionary::create();
sinaConfigDict -> setObject(String::create("568898243"), "app_key");
sinaConfigDict -> setObject(String::create(""), "app_secret");
sinaConfigDict -> setObject(String::create("http://www.sharesdk.cn"), "redirect_uri");
C2DXShareSDK::setPlatformConfig(C2DXPlatTypeSinaWeibo, sinaConfigDict);
//QQ空间
__Dictionary *qzConfigDict = __Dictionary::create();
qzConfigDict -> setObject(String::create("100371282"), "app_id");
qzConfigDict -> setObject(String::create(""), "app_key");
C2DXShareSDK::setPlatformConfig(C2DXPlatTypeQZone, qzConfigDict);
//微信
__Dictionary *wcConfigDict = __Dictionary::create();
wcConfigDict -> setObject(String::create("wx4868b35061f87885"), "app_id");
C2DXShareSDK::setPlatformConfig(C2DXPlatTypeWeixiSession, wcConfigDict);
C2DXShareSDK::setPlatformConfig(C2DXPlatTypeWeixiTimeline, wcConfigDict);
C2DXShareSDK::setPlatformConfig(C2DXPlatTypeWeixiFav, wcConfigDict);
//QQ
__Dictionary *qqConfigDict = __Dictionary::create();
qqConfigDict -> setObject(String::create("100371282"), "app_id");
C2DXShareSDK::setPlatformConfig(C2DXPlatTypeQQ, qqConfigDict);
}
8. sharesdk一定要获取appkey吗
添加应用就能获取到appkey了,我现在用的是语音云开放统计,很不错,分析内容上丰富,数据稳定性好,页面风格布局都比较舒服
9. ios 不使用三方库怎么实现第三方登录
、在 - (BOOL)application: didFinishLaunchingWithOptions:注册ShareSDK、添加集成平台、注册Parse
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
[ShareSDK registerApp:@"288fe15ac67e"]; //参数为ShareSDK官网中添加应用后得到的AppKey
//Parse Key
[Parse setApplicationId:@""
clientKey:@""];
///新浪微博:
//App Key:3819780424
//App Secret:
//腾讯微博:
//App key:2620460989
//App secret:
//分享内容URL
[ShareSDK connectSinaWeiboWithAppKey:@"3819780424"
appSecret:@""
redirectUri:@"http://www..com"];
// //新浪微博
// //App Key:801498670
// //App Secret:
//
// //添加腾讯微博应用
// [ShareSDK connectTencentWeiboWithAppKey:@"801307650"
// appSecret:@""
// redirectUri:@"http://www.sharesdk.cn"];
// //添加豆瓣应用
// [ShareSDK connectDoubanWithAppKey:@""
// appSecret:@"e32896161e72be91"
// redirectUri:@"http://dev.kumoway.com/braininference/infos.php"];
//
// //添加人人网应用
// [ShareSDK connectRenRenWithAppKey:@""
// appSecret:@""];
//
//
//
// //添加Facebook应用
// [ShareSDK connectFacebookWithAppKey:@"107704292745179"
// appSecret:@""];
return YES;
}
其中传入ShareSDK的参数则是之前创建应用的AppKey,而Parse的ApplicationId和clientKey可在应用信息面板中获取。
3.5.实现SSO授权(SSO授权登录<无需用户输入密码登录>)
注意:每个第三方客户端的SSO授权方法不同:
详情可查看
http://wiki.sharesdk.cn/iOS配置SSO授权
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//(新浪微博)例:在AppDelegate添加2个方法:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [ShareSDK handleOpenURL:url wxDelegate:nil];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [ShareSDK handleOpenURL:url
sourceApplication:sourceApplication
annotation:annotation
wxDelegate:nil];
}
打开*-Info.plist(*代表你的工程名字)。找到URL types配置项(如果没有则新增),展开URL types – URL Schemes,在URL Schemes下分别各新增一项用于新浪微博的Scheme(如果不添加则会导致法返回应用)。其填写格式为:wb+appKey(你在新浪微博申请的AppKey), 如:wb2279784657
10. 如何使用ShareSDK让APP快速拥有分享功能
集成指南 1 获取ShareSDK 为了集成ShareSDK,您首先需要到ShareSDK 官方网站注册并且创建应用,获得 ShareSDK 的Appkey,然后到SDK 的下载页面下载SDK 的压缩包,解压以后可以得到 下图的四个目录: 其中的Libs 包含ShareSDK 的类库,Src 包含集成微信和新浪微博需要的回调,Res 是 开发者信息示例,而Sample 则包含一个完整的操作演示。 Libs 里具体包括三个文件夹,分别是ShareSDK 的全局依赖库、ShareSDK 当前支持的 所有平台工具库和ShareSDK 可视化UI 的一些支持库。“全局依赖库”是集成ShareSDK 的基础,ShareSDK 的任何平台都依赖于这个库,而“ShareSDK-GUI”提供的是一个侧栏 控件和一个快捷分享工具,以方便开发者更快速地集成ShareSDK。 2 快速集成 2-1 导入Libs 1) 将“Libs\Global-Dependences”下的jar 包复制到您的libs 目录下。 2) 从“Libs\Platforms”中选择您感兴趣的平台,比方说“新浪微博”、“QQ 空间”、“腾讯 微博”等,复制相应的压缩包您项目的libs 目录下并解压,解压过程中如遇覆盖提示, 请同意覆盖。 3) 如果您决定使用ShareSDK 提供的快捷分享工具,请复制“Libs\ShareSDK-GUI”中复 制“cn.sharesdk.onekeyshare.jar”到您项目中。 4) 如果您的开发环境不能自动加载ShareSDK 的jar 包到您的项目中,请修改您项目 的构建路径,将上述jar 包添加到您的项目中。下图以Eclipse 为例,展示添加后的效果: 2-2 添加代码 1) 打开您项目的入口Activity,在其onCreate 中插入下面的代码: ? 1 AbstractWeibo.initSDK(this); 这行代码用于初始化ShareSDK,必须在程序启动之时调用。 2)使用下面的代码,调用ShareSDK 快捷分享功能: 分享时Notification 的图标 ? 01 02 03 04 05 06 07 08 09 Intent i = new Intent(this, ShareAllGird.class); // 分享时Notification 的图标 i.putExtra("notif_icon", R.drawable.ic_launcher); // 分享时Notification 的标题 i.putExtra("notif_title", getString(R.string.app_name)); // 分享内容的标题(仅部分平台需要此字段) i.putExtra("title", "ShareSDK Demo"); // 分享内容的文本 i.putExtra("text", "share at: " + System.currentTimeMillis()); 10 11 12 13 14 15 // 分享内容的本地图片路径(为null 或文件不存在表示不分享图片) i.putExtra("image", Environment.getExternalStorageDirectory () + "/ssdk.png"); // 分享内容的网络图片地址(仅部分平台需要此字段) i.putExtra("image_url", "http://sharesdk.cn/Public/Frontend/images/logo.png"); // 设置是否跳转内容编辑页面,true 表示不跳转,不传递表示false(跳转) i.putExtra("silent", silent); startActivity(i); 3) 如果您的项目中集成微信平台,请将“Sample/src/cn/sharesdk/demo”中的“wxapi” 目录复制到您的项目主包下。 4) 如果您的项目中集成微博平台,请将“Sample/src”中的“com”目录复制到您的项目 中。 2-3 添加开发者信息 ShareSDK 使用统一的格式管理您在不同平台上注册的开发者信息。这些信息都存放在 您项目的“assets/ShareSDKDevInfor.xml”中。请到“Res”中将ShareSDKDevInfor.xml 复 制到您项目的对应位置,打开文件,然后根据不同的平台的数据,如下面的例子所示, 替换您在这个平台上的开发者信息: ? 1 2 3 4 5 6 7 2-4 配置AndroidManifest.xml 1) 请在您项目的AndroidManifest.xml,添加了如下的所有权限: ? 1 2 3 4 5 6 7 8 这些权限将允许您的项目和ShareSDK 获取连接网络的权限、获取您的设备网络状态的 权限、实现https 安全连接的权限、读取手机设备状态的权限和保存必要配置的权限。 一般来说,即便不集成ShareSDK,大部分的项目也都会注册申请这些权限。 2)在application 下注册下面的Activity: ? 1 2 3 4 5 6 7 3)如果您的项目集成为微信和新浪微博,在application 下注册下面的Activity: ? 01 02 03 04 05 06 07 08 09 104)如果您的项目集微信,在application 下注册下面的Activity: ? 1 2 3 4 5 5)如果您使用ShareSDK 的快捷分享工具,在application 下注册下面的Activity: ? 01 02 03 04 05 06 07 08 09 2-5 签名 对于ShareSDK 的大部分平台,只要您将其jar 包和依赖集成到您的项目以 后就可以开始进行工作了。但是对于微信的两个平台却不行。因为微信开放平台要求 android 的第三方开发者需要提供自己项目的信息和签名指纹数据。为了演示分享功能 Sample 包中携带了一个"demokey.keystore"的keystore 文件,其密码是“123456”,如 果您在调试SSDKDemo 的时候集成了微信的平台,就需要使用这个keystore 对apk 进 行签名,之后才能尝试微信的分享。 3 主要功能解释 ShareSDK 使用同一的接口实现不同平台的同类操作,如:授权、分享、关注等等。因 此开发者可以在不理会平台差异的情况下,简单使用一句代码完成不同平台的各种操作。 3-1 获取已集成的平台列表 下面的代码演示获取已经集成到您项目中的ShareSDK 平台列表: ? 1 AbstractWeibo[] weiboList = AbstractWeibo.getWeiboList(context) 返回的列表中平台的排列顺序依照您在ShareSDKDevInfor.xml 中为其配置的SortId 来 定。 请注意,此方法在第一次调用的时候可能会比较耗时,因此不建议在主线程中调用。 3-2 通过名字获取指定平台实例 除了getWeiboList 的方法可以获取到平台实例以外,如果您想单独获取某一个平台的实 例,还可以利用下面的方法,若获取腾讯微博的实例: ? 1 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, TencentWeibo.NAME); 其中的,其中的TencentWeibo.NAME 是腾讯微博平台的静态字段,每一个平台都有一 个NAME 的字段,表示其名字。 3-3 设置操作回调 不论利用ShareSDK 进行何种操作,如果希望得到操作的结果,都必须为执行操作的平 台设置WeiboActionListener 的回调。下面的代码演示对腾讯微博绑定 WeiboActionListener 的方法: ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, TencentWeibo.NAME); weibo.setWeiboActionListener( new WeiboActionListener() { public void onError(AbstractWeibo weibo, int action, Throwable t) { // 操作失败的处理代码 } public void onComplete(AbstractWeibo weibo, int action, HashMap res) { // 操作成功的处理代码 } public void onCancel(AbstractWeibo weibo, int action) { // 操作取消的处理代码 } } ); 3-4 授权 手动授权并不是必要的操作,但是ShareSDK 提供手动的授权操作,如下面的代码演示 新浪微博的授权操作: ? 1 2 3 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.authorize(); 授权结果将通过WeiboActionListener 接口返回。 3-5 获取用户资料 下面的代码演示新浪微博获取资料的方法,其他的平台(微信除外)也支持类似的操作: ? 1 2 3 String account = "3189087725"; AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.showUser(account); 其中account 是准备获取资料的帐号,如果account 为null,则表示获取授权账户自己 的资料。 获取资料前ShareSDK 会自行判断平台是否已经授权,若未授权,会自行执行授权操作。 3-6 分享 下面的代码演示通用的分享操作(QQ 空间、印象笔记请参考另外更合适其平台特性的 接口): ? 1 2 3 4 5 String text = “测试分享的文本”; String image = “/mnt/sdcard/测试分享的图片.jpg” ; AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.share(text, image); 其中的text 是分享的文本内容,image 是分享图片的本地路径。 微信好友和微信朋友圈的分享,应该使用新的分享接口,具体操作可以参考Sample 中 的相关例子,下面的例子展示使用微信分享网页的方法: ? 1 2 3 4 5 6 7 8 AbstractWeibo weibo = AbstractWeibo.getWeibo(menu.getContext(), Wechat.NAME); weibo.setWeiboActionListener(this); String title = "这是标题"; String text = "这是文本内容"; String url = "http://sharesdk.cn"; String thumbUrl = "/mnt/sdcard/网页缩略图.jpg"; weibo.share(AbstractWeibo.SHARE_WEBPAGE, title, text, url, thumbUrl); 其中的share(int, Object…)方法是新版本添加的分享接口,暂时支持微信两个平台的分 享,但后续版本的分享功能会往这个方法迁移。 QQ 空间调用下面的接口更适合其平台特性: ? 1 2 3 4 5 6 String title = “测试分享的标题” String text = “测试分享的文本”; String imageUrl = “[url]http://www.someserver.com/[/url]测试分享的图片.jpg” AbstractWeibo weibo = AbstractWeibo.getWeibo(context, QZone.NAME); weibo.setWeiboActionListener(waListener); weibo.share(title, null, null, text, imageUrl, "ShareSDK", "http://www.sharesdk.cn"); 对于接口的详细解释,请参考QQ 登录平台的add_share 接口。 印象笔记的分享内容需要携带笔记标题,因此调用下面的接口更为合适: ? 1 2 3 4 5 6 String title = “测试分享的标题” String text = “测试分享的文本”; String image = “/mnt/sdcard/测试分享的图片.jpg” AbstractWeibo weibo = AbstractWeibo.getWeibo(context, Evernote.NAME); weibo.setWeiboActionListener(waListener); weibo.save(title, text, image); 对于印象笔记,分享的share 接口依然可用,但是更好的接口是save。 执行分享前ShareSDK 会自行判断平台是否已经授权,若未授权,会自行执行授权操作。 信息和邮件分享功能使用send 接口,具体例子如下: ? 1 2 3 4 5 6 7 String address = ”10086”; String title = “测试分享的标题” String text = “测试分享的文本”; String image = “/mnt/sdcard/测试分享的图片.jpg” AbstractWeibo weibo = AbstractWeibo.getWeibo(context, ShortMessage.NAME); weibo.setWeiboActionListener(waListener); ((ShortMessage) weibo).send(address, title, text); 短信的分享只支持SMS 分享,如果直接分享MMS,则分享结果无法获取。至于邮件, 不管分享方式如何,都无法直接获取分享结果。 执行分享前ShareSDK 会自行判断平台是否已经授权,若未授权,会自行执行授权操作。 3-7 关注指定用户 当前的ShareSDK 已经实现了新浪微博和腾讯微博的关注功能,下面的代码演示腾讯微 博的关注操作: ? 1 2 3 4 String account = "shareSDK"; AbstractWeibo weibo = AbstractWeibo.getWeibo( context,TencentWeibo.NAME); weibo.setWeiboActionListener(waListener); weibo.followFriend(account); 执行关注前ShareSDK 会自行判断平台是否已经授权,若未授权,会自行执 行授权操作。 3-8 获取平台数据库 ShareSDK 将每一个平台的授权数据都缓存在SharedPreferences 中,并且相互独立。 如果你希望获取任何一个平台的授权数据,可以像下面这样子做: ? 1 2 3 4 AbstractWeibo weibo = AbstractWeibo.getWeibo(this, TencentWeibo.NAME); String accessToken = weibo.getDb().getToken(); String openId = weibo.getDb().get("openid"); // 接下来执行你要的操作 不同平台都会缓存access token 等信息,可以通过getToken()或者setToken()进行操 作。此外,开发者还可以通过直接get()某个字段的办法,获取其数据,如上面通过“openid” 字段获取到腾讯微博的openId。 3-8 取消授权 下面的代码演示新浪微博取消授权的操作: ? 1 2 AbstractWeibo weibo = AbstractWeibo.getWeibo(context, SinaWeibo.NAME); weibo.removeAccount(); 此接口不需要WeiboActionListener,所以直接调用即可。