小弟第一次写博客,有什么对不住的就请多原谅!

废话不多说,先上图:

       

其实呢,这个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());
有兴趣的朋友可以试试 
9.因为有些平台分享的要求有点不一样,比如新浪只能是150个字(PS:好像是150字),那么我们就需要区别平台来进行分享
//oks.setShareContentCustomizeCallback(new ShareContentCustomizeDemo());
去除注释,在 ShareContentCustomizeDemo 类里面区分不同的平台
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");}*/}}
PS:  小弟处作,有问题的地方 或者不足的地方请大家提出来。。。谢谢!~
多多关照呀!

DEMO下载

这也是DEMO,但是要1分,有分的就支援支援.谢谢

关于ShareSDK的图文分享相关推荐

  1. Android通过ShareSDK实现新浪微博分享

    ShareSDK社会化分享的官方说明:是中国最大的APP内分享服务提供商,ShareSDK社会化分享,全面支持微信,微博,QQ空间,来往,易信,Facebook等国内外40个平台. ShareSDK官 ...

  2. ShareSDK Android端分享与授权示例代码

    本文意在提供更便捷的分享和授权代码,仅供参考,希望可以给你带来更愉快的开发心情: 分享 分享分为两种方式:第一种通过OneKeyShare一键九宫格分享,第二种指定平台分享 一键九宫格分享多个平台 一 ...

  3. android 分享微信 不审核,ShareSDK Android 微信分享 绕过审核与不绕过审核

    首先,微信在android平台有两种方式:一种是绕过审核分享,一种是不绕过审核分享. 绕过审核和不绕过审核的对比图如下: 1.微信好友对比图: 绕过审核分享分享给微信好友时看到的只是图片文件,显示的是 ...

  4. ShareSDK 第三方平台分享参数说明

    本文介绍使用 ShareSDK 时,各个社交平台的分享情况说明 新浪微博分享规则 新浪微博支持分享类型: 应用内分享: 文字,文字+图片,链接 客户端分享:文字,文字+图片,链接,视频,多图(只支持本 ...

  5. ShareSDK关于微信分享问题

    转自:http://www.eoeandroid.com/thread-310281-1-1.html 发现用sharesdk,做其他平台分享很快:如新浪微博.腾讯微博.有道云笔记.开心网.Googl ...

  6. shareSDK如何只分享图片

    本文主要是针对cocos creator项目接入shareSDK后的截图分享问题 遇到的问题 Android只能分享sdcard下的图片 IOS图片必须要在Xcode左边目录里面,也就是必须在包里面 ...

  7. QQ图文分享卡片如何制作,将链接转换为可编辑图文卡片

    ​​我们在QQ单/群聊中发送h5链接时,链接展现效果不是很好别人不敢点击,那么本教程教您如何制作QQ图文分享卡片. QQ图文卡片制作教程: 1.在后台点击 小狐工具箱-创建卡片,选择QQ卡片,先选择不 ...

  8. VAIO侍14Ultra笔记本U盘重装Win10操作图文分享

    VAIO侍14Ultra笔记本U盘重装Win10操作图文分享.有用户使用的VAIO侍14Ultra笔记本系统出现了一些问题,需要重新进行安装.针对这个问题,今天和大家一起来分享看看如何使用U盘来进行 ...

  9. shareSDK qq 微信分享

    原因:到官方网站集成第三方应用的分享,很麻烦,除了微信之外,我们还可能做qq.qq空间.微博.其他的等等,都自己写耽误时间还容易错,因此我们用第三方,直接一起全部集成,这里以qq.微信为例. 1,首先 ...

最新文章

  1. c语言节点的作用,C语言链表(基本功能函数)
  2. 近一个月的学习总结(4.8—5.12)
  3. Kotlin如何避免“!!”(非空断言)
  4. Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
  5. 生日快乐编程代码_世界上最好的编程语言,刚刚度过了25周岁生日
  6. Spring里的容器和Bean对象
  7. linux 定时器 代码,linux C++ 定时器代码
  8. 【BZOJ1934】【codevs2341】善意的投票,二分图最小割
  9. BZOJ1876 SDOI2009 SuperGCD 其他
  10. day20T3改错记
  11. 网站建设的一般原则及网站推广技巧
  12. restsharp简单使用
  13. 关于使用开源版urule决策引擎优化性能和配置客户端集群同步生效的问题
  14. C语言中如何在不使用数组的情况下求方差?使用数组和使用for循环的区别。
  15. 用python制作动态二维码印刷价格_用一行Python代码制作动态二维码
  16. 我进滑雪场前做的功课
  17. shell脚本中执行ssh
  18. Filecoin(FIL) 交易离线签名
  19. SQL Server2008函数大全
  20. 机器学习笔记 (第一周)

热门文章

  1. 贝叶斯学习、MAP、ML
  2. 开源的第三方支付系统
  3. R-studio数据恢复软件使用教程
  4. 5分钟告诉你如何成为一名黑客?从萌新成为大佬,只需掌握这5点(思维、编程语言、网络安全、入侵实操、法律)
  5. 80GB医学影像数据集发布!OCTA-500公开下载
  6. 贝尔维尤的无人驾驶汽车网络要来啦!
  7. 虚电路和数据报的区别以及应用
  8. ES6:字符串的扩展及新增方法
  9. IT人的福音:一次腰椎间盘突出引起疼痛的过程记录
  10. 服务器操作系统怎么做映像,如何网络捕获使用 Sysprep 和 PXE 配置的服务器操作系统映像...