Android开发 何快速实现分享功能
来源:互联网 发布:曹雪阳捏脸数据 编辑:程序博客网 时间:2024/05/02 01:42
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
10
11
12
13
14
15
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());
// 分享内容的本地图片路径(为null或文件不存在表示不分享图片)
i.putExtra("image", Environment.getExternalStorageDirect
// 分享内容的网络图片地址(仅部分平台需要此字段)
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
<ShareSDK AppKey="填写您在ShareSDK上注册到的AppKey" />
<SinaWeibo
SortId="新浪微博在您分享列表中的位置,整型,数值越大越靠后"
AppKey="填写您在新浪微博上注册到的AppKey"
AppSecret="填写您在新浪微博上注册到的
AppSecret" Id="自定义字段,您可以自行选择一个整型数据,用于您项目中对此平台的识别符"
RedirectUrl="填写您在新浪微博上注册的RedirectUrl" />
2-4 配置AndroidManifest.xml
1) 请在您项目的AndroidManifest.xml,添加了如下的所有权限:
?
1
2
3
4
5
6
7
8
<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.WRITE_APN_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SEND_SMS"/>
这些权限将允许您的项目和ShareSDK获取连接网络的权限、获取您的设备网络状态的权限、实现https安全连接的权限、读取手机设备状态的权限和保存必要配置的权限。一般来说,即便不集成ShareSDK,大部分的项目也都会注册申请这些权限。
2)在application下注册下面的Activity:
?
1
2
3
4
5
6
7
<activity
</activity>
3)如果您的项目集成为微信和新浪微博,在application下注册下面的Activity:
?
01
02
03
04
05
06
07
08
09
10
<activity
/>
<activity
/>
4)如果您的项目集微信,在application下注册下面的Activity:
?
1
2
3
4
5
<activity
/>
5)如果您使用ShareSDK的快捷分享工具,在application下注册下面的Activity:
?
01
02
03
04
05
06
07
08
09
10
11
12
13
<activity
/>
<activity
/>
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(
);
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";
其中的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();
- Android开发 何快速实现分享功能
- Android开发 如何快速实现分享功能
- Android开发 如何快速实现分享功能
- Android开发 如何快速实现分享功能
- Android开发-如何快速实现分享功能
- shareSDk快速实现分享功能
- android分享功能开发!!!
- android 分享功能开发
- android分享功能开发
- android 实现分享功能
- android实现分享功能
- android 实现分享功能
- android 实现分享功能
- android 实现分享功能
- android 实现分享功能
- android实现分享功能
- Android开发学习之分享功能的实现
- Android开发之电话短信拍照分享功能实现
- 软件版本命名规范
- C++实现CString和string的互相转换
- HDU 1076(水题)
- 焚香点蜡烧元宝,学校内做“法事”
- Java自动装箱与拆箱的实现分析
- Android开发 何快速实现分享功能
- 锋利jquery---内容过滤选择器(第二章)
- 红米二代升级8核
- CSingleLock CMultiLockquiet
- 黑马程序_java基础加强1
- 地址收藏
- 互联网金融还是大数据金融
- 关于mysql无法启动,错误1067解决方法
- 基于海量数据的关联规则挖掘(三)