1.sharesdk快捷方式,快捷方式集成了所有需要分享到的手机app,但是具有缺陷,举个例子(想要微信分享图片url,但是短信并不想带有图片,否则短信成彩信,这里集成的就有麻烦了,为了解决这种问题,就需要自定义,写个回调函数,去掉短信里面的图片资源)

2.sharesdk可以单独的去分享,比如只有微信,这里给的参考文档并不是特别详细,与客服mm聊了很久才解决问题

移植步骤:

  1. 下载android资源:http://www.mob.com/#/downloadDetail/ShareSDK/android
  2. 根据文档:http://wiki.mob.com/Android_%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97/undefined生成你想要的资源
  3. 移植至你的应用,这里需要配置的地方有很多(请看文档),当然你也需要注册你的应用在sharesdk,以及你想要使用的分享应用,如:微信。新浪。qq等,这里需要获取你的应用签名
  4. 根据注册信息替换相应的appid等信息
  5. 快捷分享方式:

1. 1.按钮点击事件 case R.id.pll_Invitation: // 邀请
if (HttpUtil.isNetworkAvailable(mContext)) {
ShareSDK.initSDK(mContext);
OnekeyShare oks = new OnekeyShare();
/*增加回调,处理短信内容*/
oks.setCallback(this);
ShareMSG.showShare(oks,mContext);
}else{
Toast.makeText(mContext, "请联网后使用", 1000).show();
} break; 1. 2.调用方法: public class ShareMSG {
public static void showShare(OnekeyShare oks,Context mContext) {
final String downUrl="http://fainic.software/EbonPm_m"; // 关闭sso授权
oks.disableSSOWhenAuthorize(); // 分享时Notification的图标和文字 2.5.9以后的版本不调用此方法。现在是2.6.3,所以不使用
// oks.setNotification(R.drawable.ic_launcher,
// getString(R.string.app_name));
// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
oks.setTitle("易贝恩项目管家分享");
// text是分享文本,所有平台都需要这个字段
oks.setText(Html.fromHtml("<a href = '"+downUrl+"'>我正在使用易贝恩项目管家 管理项目,你也来试试!\n 临时立即下载 </a>") +
downUrl+
"\n(可自行复制至浏览器或百度下载!)"); // 网络图片的url:所有平台,由于短信不需要图片,微信里面必须带有图片,所以在微信里单写
oks.setImageUrl("http://fainic.software/EbonPm_m/logo.png");// 网络图片rul /* *
* titleUrl是标题的网络链接,仅在人人网和QQ空间使用
*/
oks.setTitleUrl(downUrl);
// imagePath是图片的本地路径:除Linked-In以外的平台都支持此参数
// oks.setImagePath(Environment.getExternalStorageDirectory() +
// "/meinv.jpg");//确保SDcard下面存在此张图片 // comment是我对这条分享的评论,仅在人人网和QQ空间使用
// oks.setComment("我是测试评论文本");
// site是分享此内容的网站名称,仅在QQ空间使用
oks.setSite("伊贝恩项目管理助手");
// siteUrl是分享此内容的网站地址,仅在QQ空间使用
oks.setSiteUrl(downUrl); /* *
* url仅在微信(包括好友和朋友圈)中使用
*/
oks.setUrl(downUrl);
oks.setDialogMode(); //此处为本demo关键为一键分享折子定义分享回调函数 shareContentCustomuzeCallback
//oks.setCallback(this);增加回调
//自定义平台可以通过判断不同的平台来实现不同平台间的不同操作
oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {
//自定义分享的回调想要函数
@Override
public void onShare(Platform platform,
cn.sharesdk.framework.Platform.ShareParams paramsToShare) {
// 点击微信好友、朋友圈
if("Wechat".equals(platform.getName()) || "WechatMoments".equals(platform.getName())){
paramsToShare.setTitle("易贝恩项目管家分享");
// text是分享文本,所有平台都需要这个字段
paramsToShare.setText(Html.fromHtml("<a href = '"+downUrl+"'>我正在使用易贝恩项目管家 管理项目,你也来试试!\n 临时立即下载 </a>") +
downUrl+
"\n(可自行复制至浏览器或百度下载!)");
// 网络图片的url:所有平台
paramsToShare.setImageUrl("http://fainic.software/EbonPm_m/logo.png");// 网络图片rul
Log.i("Wechat", "Wechat");
}
// 点击短信
if("ShortMessage".equals(platform.getName())){
paramsToShare.setText(Html.fromHtml("<a href = '"+downUrl+"'>我正在使用易贝恩项目管家 管理项目,你也来试试!\n 临时立即下载 </a>") +
downUrl+
"\n(可自行复制至浏览器或百度下载!)");
paramsToShare.setImageUrl("");
paramsToShare.setShareType(Platform.SHARE_APPS);
}
}
});
oks.show(mContext);
// 新浪微博目前处于测试阶段,审核通过可以用
}
} 1. 3所在activity实现PlatformActionListener, Callback 接口 //分享回调 @Override
public void onCancel(Platform platf, int arg1) {
Log.i("", "onCancel");
if(arg1 == Platform.ACTION_SHARE){
UIHandler.sendEmptyMessage(SHARE_CANCEL, this);
}
} @Override
public void onComplete(Platform platf, int arg1,
HashMap<String, Object> arg2) {
Log.i("", "onComplete");
Toast.makeText(mContext, "分享成功", Toast.LENGTH_SHORT).show();
if(arg1 == Platform.ACTION_SHARE){
UIHandler.sendEmptyMessage(SHARE_SUCCESS, this);
Log.i("", "响应分享事件");
}
if(arg1 == Platform.SHARE_TEXT){
Log.i("", "响应分享文本事件");
UIHandler.sendEmptyMessage(SHARE_SUCCESS, this);
Log.i("", "..");
}
} @Override
public void onError(Platform platf, int arg1, Throwable arg2) {
// TODO Auto-generated method stub
Log.i("", "onError");
if(arg1 == Platform.ACTION_SHARE){
UIHandler.sendEmptyMessage(SHARE_ERROR, this);
}
} @Override
public boolean handleMessage(Message msg) {
Log.i("", "what = " + msg.what);
switch(msg.what) {
case SHARE_SUCCESS: {
// Log.i("", "arg1 = " + "分享成功");
// Toast.makeText(mContext, "分享成功", Toast.LENGTH_SHORT).show();
}
break;
case SHARE_CANCEL: {
Log.i("", "arg1 = " + "取消分享");
Toast.makeText(mContext, "取消分享", Toast.LENGTH_SHORT).show();
}
break;
case SHARE_ERROR: {
Log.i("", "arg1 = " + "分享错误");
Toast.makeText(mContext, "分享错误", Toast.LENGTH_SHORT).show();
}
break; } return false;
}

以上可以解决不同分享应用之间的数据差异问题,

我所遇到的问题:

1.短信、微信图片问题:微信分享有图片才能有超链接的跳转,然而短信我不需要(有图片就成彩信了),这里我是在全局里面setImageUrl,然后通过回调函数把短信的ShareParams的ImageUrl设置为空(这里我使用在全局设置里不设置ImageUrl,在微信里设置ImageUrl的值并没有微信效果,或许需要在全局设置setImageUrl(“”)这样)

6.不同平台的单独的分享:

我只是用了微信的消息分享,根据文档编写:http://wiki.mob.com/%E4%B8%8D%E5%90%8C%E5%B9%B3%E5%8F%B0%E5%88%86%E4%BA%AB%E5%86%85%E5%AE%B9%E7%9A%84%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E/

开始我使用短信还是有效果的,但是微信没效果,这里需要注意4

1.讲所有的jar包build path–》add to library,否则报错,

2加ShareSDK.initSDK(mContext);

3针对不同平台,设置好你的分享属性:sp.setShareType(Platform.SHARE_WEBPAGE);

4不同平台的ShareParams也是不一样,我就是把sp.setUrl忘记了,结果不能调用微信

代码:
if (HttpUtil.isNetworkAvailable(mContext)) {
ShareSDK.initSDK(mContext);
Platform.ShareParams sp = new Wechat.ShareParams();
// 一定要设置分享属性
sp.setShareType(Platform.SHARE_WEBPAGE);
// text是分享文本,所有平台都需要这个字段
sp.setText("我使用易贝恩项目管家给你分配了任务,请使用app进行查看!\n 没有app请点击下载 " +
"\n(点击后请在浏览器中打开下载!)");
sp.setTitle("易贝恩项目管家分享");
// // 网络图片的url:所有平台,由于短信不需要图片,微信里面必须带有图片,所以在微信里单写
sp.setImageUrl("http://fainic.software/EbonPm_m/logo.png");// 网络图片rul
sp.setUrl("http://fainic.software/EbonPm_m");
Platform qzone = ShareSDK.getPlatform (Wechat.NAME);
qzone. setPlatformActionListener (new PlatformActionListener() { @Override
public void onError(Platform arg0, int arg1, Throwable arg2) {
// TODO Auto-generated method stub
Toast.makeText(mContext, "指派分享错误", Toast.LENGTH_SHORT).show();
} @Override
public void onComplete(Platform arg0, int arg1, HashMap<String, Object> arg2) {
// TODO Auto-generated method stub
Toast.makeText(mContext, "指派分享成功", Toast.LENGTH_SHORT).show();
} @Override
public void onCancel(Platform arg0, int arg1) {
// TODO Auto-generated method stub
Toast.makeText(mContext, "指派分享删除", Toast.LENGTH_SHORT).show();
}
}); // 设置分享事件回调
// 执行图文分享
qzone.share(sp);
}else{
Toast.makeText(mContext, "请联网后使用", 1000).show();
}

以上我使用的是2.6.3版本,不过近期又有了现版本2.6.4,与客服交谈过程中发现新版本优势更多,主要是快捷分享之后的回调,所以自己更改为2.6.4

  • 微信的回调:WXEntryActivity的包名必须是 app包名+wxapi,与你在微信开发者平台填写一样,否则回调失败
  • 短信的回调这里没法监听,所以sharesdk目前是在打开短信应用之后直接调用PlatformActionListener的onComplete,代表成功,想要实现监听,估计得自己写服务监听,广播接收等,网上有类似例子
  • 这里qq/空间的监听也有所改变,修复了bug,qq是在这里添加的,其中tencent数字必须是你在qq申请的数字,tencent1104914478
<activity
android:name="com.mob.tools.MobUIShell"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" >
<intent-filter>
<!-- qq appid -->
<data android:scheme="tencent1104914478" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
  • 4.添加了新浪微博的回调
 <!-- 调用新浪原生SDK,需要注册的回调activity -->
<activity
android:name="cn.sharesdk.sina.weibo.SinaActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar" >
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

android使用sharesdk的小感的更多相关文章

  1. 用android去写一个小程序

    前言: 软工的一个小作业:实现"黄金分割小游戏", 需要结对编程,队友:陈乐云    共用时两天. 早期思路设计: 采用键值对的形式,以Map作为存储结构.优点:能够将数据与用户对 ...

  2. 八款Android 开发者必备的小工具

    Photo from https://www.airpair.com 在做Android 开发过程中,会遇到一些小的问题,虽然自己动手也能解决,但是有了一些小工具,解决这些问题就得心应手了,今天就为大 ...

  3. Android开发效率的小技巧

    提高eclipse使用效率(二) 提高Android开发效率的小技巧   XML文件的代码提示 adt中也有xml文件的代码提示,为了让提示来的更加猛烈,我们还要设置一下 打开eclipse - Wi ...

  4. Android -BLE蓝牙小DEMO

    代码地址如下:http://www.demodashi.com/demo/13890.html 原文地址: https://blog.csdn.net/vnanyesheshou/article/de ...

  5. Android——Android Studio的一些小技巧(转)

    ndroid课程---Android Studio的一些小技巧   APK瘦身 在Android Studio中我们可以开启混淆,和自动删除没有Resources文件,来达到给APP瘦身的目的,这对于 ...

  6. Android课程---Android Studio的一些小技巧

    APK瘦身 在Android Studio中我们可以开启混淆,和自动删除没有Resources文件,来达到给APP瘦身的目的,这对于一些维护很久的老项目比较有用,里面有很多无效的Resource, 删 ...

  7. android 之 桌面的小控件AppWidget

    AppWidget是创建的桌面窗口小控件,在这个小控件上允许我们进行一些操作(这个视自己的需要而定).作为菜鸟,我在这里将介绍一下AppWeight的简单使用. 1.在介绍AppWidget之前,我们 ...

  8. android Editview中加小图标或者文字实现

    关于这个问题,如果只是加小图标的话,已经提供了很好的支持,drawableLeft属性就可以设置左边的小图标,类推,右边也可以 不过如果你要加的是文字,我找了下,没有相应的属性,我们只能通过转换思路去 ...

  9. 自学Android的第一个小程序(小布局、button点击事件、toast弹出)

    因为上班,学习时间有限,昨晚才根据教程写了一个小程序,今天忙里偷闲写一下如何实现的,来加深一下印象. 首先创建一个Android项目, 通过activity_xxx.xml布局文件来添加组件来达到自己 ...

随机推荐

  1. PyTorch官方中文文档:自动求导机制

    自动求导机制 本说明将概述Autograd如何工作并记录操作.了解这些并不是绝对必要的,但我们建议您熟悉它,因为它将帮助您编写更高效,更简洁的程序,并可帮助您进行调试. 从后向中排除子图 每个变量都有 ...

  2. mybatis快速入门(六)

    前面mybatis的入门程序基本上都写完了,就看大家的灵活运用了,今天来吧前面的整合一下封装一个公共的BaseDao 只需要把前面的改造下然后创建一个BaseDao的接口,其它的继承BaseDao接口 ...

  3. 【BZOJ2816】【ZJOI2012】网络(Link-Cut Tree)

    [BZOJ2816][ZJOI2012]网络(Link-Cut Tree) 题面 题目描述 有一个无向图G,每个点有个权值,每条边有一个颜色.这个无向图满足以下两个条件: 对于任意节点连出去的边中,相 ...

  4. 【SDOI2009】HH去散步(矩阵快速幂)

    题面 题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又因为HH是 ...

  5. Vue-小demo、小效果 合集(更新中...)

    (腾讯课堂学习小demo:https://ke.qq.com/course/256052) 一.简单的指令应用 --打击灭火器 图片素材点击腾讯课堂的链接获取       html: <!DOC ...

  6. Unreachable statement

    public boolean onQueryTextSubmit(String s) { if (sv != null) { // 得到输入管理对象 InputMethodManager imm = ...

  7. Apache Shiro 标签方式授权

    Shiro提供了一套JSP标签库来实现页面级的授权控制. 在使用Shiro标签库前,首先需要在JSP引入shiro标签: <%@ taglib prefix="shiro"  ...

  8. PHP+MySQL分页原理实现

    功能简介:包含上一页.下一页.首页.尾页.跳转页面等功能. 编码寄语:化繁为简,则豁然开朗. 运行截图: 关键步骤: 创建数据库 CREATE TABLE `page` ( `ID` ) NOT NU ...

  9. Vim修炼秘籍之语法篇

    前言 少年,我看你骨骼精奇,是万中无一的武学奇才,维护世界和平就靠你了,我这有本秘籍<Vim修炼秘籍>,见与你有缘,就十块卖给你了! 如果你是一名 Vimer,那么恭喜你,你的 Vim 技 ...

  10. Error400

    关于Error400,研究了几天终于弄明白了.不是FQ的问题,也不是DNS污染的问题.之前网上很多帖子说Error400可以通过删除 cookies来解决.但是其实这个并不管用.也就是说.原因并不是由 ...