关于ShareSDK的图文分享
小弟第一次写博客,有什么对不住的就请多原谅!
废话不多说,先上图:
其实呢,这个DEMO是比较简单的,下面一步一步教大家:
项目结构:
1.布局(布局很简单啦,就一个Button)
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><Button android:id="@+id/button1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="一键分享"/></RelativeLayout>
2.既然咱们是要用ShareSDK来实现图文分享,那么就要先去他的官网下载所需要的SDK (SDK下载),你可以勾选你所需要的分享平台(比如微信,新浪...)
(PS:你还可以取下载官网的DEMO的看看,也不错)
平台lib : ..\ShareSDK for Android\Libs\MainLibs\libs 框架lib:...\ShareSDK for Android\Libs\OneKeyShare\libs
图标:.......\ShareSDK for Android\Libs\OneKeyShare\res\drawable-xhdpi
XML: ...\ShareSDK for Android\Res\ShareSDK.xml (这个放在assets)
3.ShareSDK.xml
主要是要到ShareSDK 官网去注册一个AppKey
修改里面的一些值,你下载的ShareSDK.xml 有详细的注释,这里就不多说了
4.Copy 你下载目录中的 ....\ShareSDK for Android\Libs\OneKeyShare\src\cn\sharesdk\onekeyshare 这个包
(这是官方做的相当于一个框架吧)
5.重点来了 主要是写一个onkey(String platform) 这个方法
下面是代码,都有详细的注释:
package com.example.sharesdk_onkeysharedemo;import java.io.File;
import java.io.InputStream;import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
import cn.sharesdk.framework.ShareSDK;
import cn.sharesdk.onekeyshare.OnekeyShare;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=(Button)findViewById(R.id.button1);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubtry {onkey(null);} catch (Exception e) {// TODO Auto-generated catch blockToast.makeText(getApplicationContext(), "请检查您的程序是否安装", 0).show();}}});}private void onkey(String platform) {// TODO Auto-generated method stubShareSDK.initSDK(this); //初始化 (必须)OnekeyShare oks = new OnekeyShare();//关闭sso授权oks.disableSSOWhenAuthorize();// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用oks.setTitle("标题");// titleUrl是标题的网络链接,仅在人人网和QQ空间使用oks.setTitleUrl("www.baidu.com");// text是分享文本,所有平台都需要这个字段oks.setText("文本内容");// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数// oks.setImagePath("/sdcard/test.jpg");//costume.getLargepic()// InputStream abpath = getClass().getResourceAsStream("/assets/girl.jpg");//String path ="file:///android_asset/girl.jpg"; //以name存在目录中//分享的图片 (这里是网络图片的地址)String path ="http://f.hiphotos.baidu.com/image/pic/item/b219ebc4b74543a977adc9d01d178a82b9011473.jpg"; oks.setImageUrl(path);//新浪目前没有通过审核没有申请高级权限,在新浪上会分享失败,应用通过审核后去申请高级权限就可以设置图片了[设置imageurl需要在开放平台申请高级权限]//url在微信(包括好友、朋友圈收藏)和易信(包括好友和朋友圈)中使用,否则可以不提供 oks.setUrl("www.baidu.com");//filePath是待分享应用程序的本地路劲,仅在微信(易信)好友和Dropbox中使用,否则可以不提供oks.setFilePath(path);//comment是我对这条分享的评论,仅在人人网和QQ空间使用,否则可以不提供 oks.setComment(path);//site是分享此内容的网站名称,仅在QQ空间使用,否则可以不提供 oks.setSite("网站名称");//siteUrl是分享此内容的网站地址,仅在QQ空间使用,否则可以不提供 oks.setSiteUrl("www.baidu.com");//foursquare分享时的地方名oks.setVenueName("ShareSDK");//foursquare分享时的地方描述oks.setVenueDescription("This is a beautiful place!");//分享地纬度,经度,新浪微博、腾讯微博和foursquare支持此字段oks.setLatitude(23.056081f);oks.setLongitude(113.385708f);//是否直接分享oks.setSilent(false);//设置编辑页的初始化选中平台if (platform != null) {oks.setPlatform(platform);}// 去除注释,可令编辑页面显示为Dialog模式// oks.setDialogMode();// 去除注释,在自动授权时可以禁用SSO方式// oks.disableSSOWhenAuthorize();// 去除注释,则快捷分享的操作结果将通过OneKeyShareCallback回调// oks.setCallback(new OneKeyShareCallback());//oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo());// 去除注释,演示在九宫格设置自定义的图标/* Bitmap logo = BitmapFactory.decodeResource(menu.getResources(), R.drawable.ic_launcher);String label = menu.getResources().getString(R.string.app_name);OnClickListener listener = new OnClickListener() {public void onClick(View v) {String text = "Customer Logo -- ShareSDK " + ShareSDK.getSDKVersionName();Toast.makeText(menu.getContext(), text, Toast.LENGTH_SHORT).show();oks.finish();}};oks.setCustomerLogo(logo, label, listener);*/// 去除注释,则快捷分享九宫格中将隐藏新浪微博和腾讯微博// oks.addHiddenPlatform(SinaWeibo.NAME);// oks.addHiddenPlatform(TencentWeibo.NAME);oks.show(MainActivity.this);}/*** 快捷分享项目现在添加为不同的平台添加不同分享内容的方法。*本类用于演示如何区别Twitter的分享内容和其他平台分享内容。*//*class ShareContentCustomizeDemo implements ShareContentCustomizeCallback {public void onShare(Platform platform, ShareParams paramsToShare) {// 改写twitter分享内容中的text字段,否则会超长,// 因为twitter会将图片地址当作文本的一部分去计算长度if (Twitter.NAME.equals(platform.getName())) {String text = platform.getContext().getString("看不");paramsToShare.setText(text);}}}*///然后:在后面加上斜杠,在加上文件名 @Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();ShareSDK.stopSDK(this);//记住要结束}
}
6.记住把VALUES 里面的文件放进去 (官网DEMO有,我的项目也有)
7.最后别忘了 AndroidManifest.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.sharesdk_onkeysharedemo"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><!--权限 --><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.WRITE_EXTERNAL_STORAGE" /><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" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.sharesdk_onkeysharedemo.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="cn.sharesdk.framework.ShareSDKUIShell"android:configChanges="keyboardHidden|orientation|screenSize"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:windowSoftInputMode="stateHidden|adjustResize" ><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></activity><!-- 微信分享回调 --><activityandroid:name="cn.sharesdk.demo.wxapi.WXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /><!-- 易信分享回调 --><activityandroid:name="cn.sharesdk.demo.yxapi.YXEntryActivity"android:configChanges="keyboardHidden|orientation|screenSize"android:exported="true"android:screenOrientation="portrait"android:theme="@android:style/Theme.Translucent.NoTitleBar" /></application></manifest>
8.(不要微信和易信分享回调的朋友可以忽略)
如果不要的话,上面那2个Activity可以不注册, 需要回调的话 那么就要在onkey(String platform) 里面去掉注释
// 去除注释,则快捷分享的操作结果将通过OneKeyShareCallback回调// oks.setCallback(new OneKeyShareCallback());
package cn.net.brisc.wuhan.museum.ui;import java.io.UnsupportedEncodingException;import cn.net.brisc.wuhan.museum.Conf;
import cn.net.brisc.wuhan.museum.R;
import cn.net.brisc.wuhan.uitl.CutString;
import cn.sharesdk.framework.Platform;
import cn.sharesdk.framework.Platform.ShareParams;
import cn.sharesdk.onekeyshare.ShareContentCustomizeCallback;
import cn.sharesdk.wechat.favorite.WechatFavorite;
import cn.sharesdk.wechat.moments.WechatMoments;public class ShareContentCustomizeDemo implements ShareContentCustomizeCallback {@Overridepublic void onShare(Platform platform, ShareParams paramsToShare) {// TODO Auto-generated method stubif ("SinaWeibo".equals(platform.getName())) {//String text = platform.getContext().getString(R.string.share_content_short);//String st = new String(CutString.sinaweiboString.getBytes("gbk"),"UTF-8");paramsToShare.setText(CutString.sinaweiboString+"..."+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");System.out.println(CutString.sinaweiboString+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");}/*else if("Wechat".equals(platform.getName())){//paramsToShare.setText(CutString.Wechat+"..."+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");//paramsToShare.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");paramsToShare.setText(CutString.Wechat+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");paramsToShare.setTitle(CutString.title);paramsToShare.setImagePath(Conf.SDCARD+CutString.imageid+".jpg");System.out.println("微信分享内容 "+CutString.title+"++++"+Conf.SDCARD+CutString.imageid+".jpg");}else if("WechatFavorite".equals(platform.getName()) ||"WechatMoments".equals(platform.getName()) ){//paramsToShare.setText(CutString.Wechat+"..."+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");//paramsToShare.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");paramsToShare.setText(CutString.Wechat+"博物馆下载链接:http://chn.bluenion.com/tess/ips.php?dl=wuhanmuseum");paramsToShare.setTitle(CutString.title);paramsToShare.setShareType(platform.SHARE_IMAGE);paramsToShare.setImagePath(Conf.SDCARD+CutString.imageid+"");System.out.println("朋友圈 "+CutString.title+"++++"+Conf.SDCARD+CutString.imageid+".jpg");}*/}}
DEMO下载
这也是DEMO,但是要1分,有分的就支援支援.谢谢
关于ShareSDK的图文分享相关推荐
- Android通过ShareSDK实现新浪微博分享
ShareSDK社会化分享的官方说明:是中国最大的APP内分享服务提供商,ShareSDK社会化分享,全面支持微信,微博,QQ空间,来往,易信,Facebook等国内外40个平台. ShareSDK官 ...
- ShareSDK Android端分享与授权示例代码
本文意在提供更便捷的分享和授权代码,仅供参考,希望可以给你带来更愉快的开发心情: 分享 分享分为两种方式:第一种通过OneKeyShare一键九宫格分享,第二种指定平台分享 一键九宫格分享多个平台 一 ...
- android 分享微信 不审核,ShareSDK Android 微信分享 绕过审核与不绕过审核
首先,微信在android平台有两种方式:一种是绕过审核分享,一种是不绕过审核分享. 绕过审核和不绕过审核的对比图如下: 1.微信好友对比图: 绕过审核分享分享给微信好友时看到的只是图片文件,显示的是 ...
- ShareSDK 第三方平台分享参数说明
本文介绍使用 ShareSDK 时,各个社交平台的分享情况说明 新浪微博分享规则 新浪微博支持分享类型: 应用内分享: 文字,文字+图片,链接 客户端分享:文字,文字+图片,链接,视频,多图(只支持本 ...
- ShareSDK关于微信分享问题
转自:http://www.eoeandroid.com/thread-310281-1-1.html 发现用sharesdk,做其他平台分享很快:如新浪微博.腾讯微博.有道云笔记.开心网.Googl ...
- shareSDK如何只分享图片
本文主要是针对cocos creator项目接入shareSDK后的截图分享问题 遇到的问题 Android只能分享sdcard下的图片 IOS图片必须要在Xcode左边目录里面,也就是必须在包里面 ...
- QQ图文分享卡片如何制作,将链接转换为可编辑图文卡片
我们在QQ单/群聊中发送h5链接时,链接展现效果不是很好别人不敢点击,那么本教程教您如何制作QQ图文分享卡片. QQ图文卡片制作教程: 1.在后台点击 小狐工具箱-创建卡片,选择QQ卡片,先选择不 ...
- VAIO侍14Ultra笔记本U盘重装Win10操作图文分享
VAIO侍14Ultra笔记本U盘重装Win10操作图文分享.有用户使用的VAIO侍14Ultra笔记本系统出现了一些问题,需要重新进行安装.针对这个问题,今天和大家一起来分享看看如何使用U盘来进行 ...
- shareSDK qq 微信分享
原因:到官方网站集成第三方应用的分享,很麻烦,除了微信之外,我们还可能做qq.qq空间.微博.其他的等等,都自己写耽误时间还容易错,因此我们用第三方,直接一起全部集成,这里以qq.微信为例. 1,首先 ...
最新文章
- c语言节点的作用,C语言链表(基本功能函数)
- 近一个月的学习总结(4.8—5.12)
- Kotlin如何避免“!!”(非空断言)
- Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
- 生日快乐编程代码_世界上最好的编程语言,刚刚度过了25周岁生日
- Spring里的容器和Bean对象
- linux 定时器 代码,linux C++ 定时器代码
- 【BZOJ1934】【codevs2341】善意的投票,二分图最小割
- BZOJ1876 SDOI2009 SuperGCD 其他
- day20T3改错记
- 网站建设的一般原则及网站推广技巧
- restsharp简单使用
- 关于使用开源版urule决策引擎优化性能和配置客户端集群同步生效的问题
- C语言中如何在不使用数组的情况下求方差?使用数组和使用for循环的区别。
- 用python制作动态二维码印刷价格_用一行Python代码制作动态二维码
- 我进滑雪场前做的功课
- shell脚本中执行ssh
- Filecoin(FIL) 交易离线签名
- SQL Server2008函数大全
- 机器学习笔记 (第一周)