当前位置: 首页 > 编程日记 > 正文

Mob之社会化分享集成ShareSDK

接着上篇顺便分享一篇自己使用 ShareSDK 的笔记,上篇我们集成了 SMSSDK 完成了短信接收验证码的功能,请参考Mob 之 短信验证集成 SMSSDK,如何在项目已经集成 SMSSDK 的情况下集成 ShareSDk 到项目中,上一篇中我们集成 SMSSDK 使用的是导入 jar 包的形式,这里我们使用创建 module 的方式引入 ShareSDk,主要内容如下:

  1. 下载ShareSDK
  2. 引入 ShareSDK
  3. 创建 MainLibs Module
  4. 创建 OneKeyShare Module
  5. 在项目中引入 Module
  6. 配置权限
  7. 配置 Application
  8. 启用 ShareSDK

下载 ShareSDk

官网下载地址:ShareSDK,下载的时候选中要分享的平台,如下图所示:

image

下载的 ShareSDk 解压缩如下,这里下载的版本是 ShareSDK-Android-3.0.0 ,如下图所示:

image

引入 ShareSDK

首先,复制 ShareSDk 中的 ShareSDK.xml 文件到项目中的 assets 目录下,
这里使用引入 module 的方式引入 ShareSDk,ShareSDK 里面主要引入如下两个 Libs,如下图所示:

image
下面演示一下 Module的创建过程:

创建 MainLibs Module

  1. 在新建的项目中创建一个 Android Library,如下图所示:
    image
  2. 删除新创建的 Library 中 main 下面的所有文件,及 java、res两个文件夹和 AndroidManifest.xml 文件,如下图所示:
    image

  3. 复制要引入的 MainLibs 中的 res 、 AndroidMainfest.xml 、 libs(里面的jar) 到对应的文件夹,如下图所示:
    image
    导入 mainLibs 中结构如下:

image
此时,这个 module 就创建好了,这里使用 ShareSDK 提供的分享页面,故还需引入 OneKeyShare。

创建 OneKeyShare Module

创建 Module 的过程和上述一样,注意的是多了一个 src ,里面是要使用的 java 文件,所以必须也得引用,如下图所示:

image

将 src 文件夹复制到 main下面即可,build 之后如果不出错,说明 Module 创建成功了,下面根据依赖关系一如对应的 Module 即可。

在项目中引入 Module

这里面 OnKeyShareLibs 依赖 MainLibs ,只需 app 依赖 OnkeyShareLibs 即可,这里演示 OnKeyShareLibs 如何依赖 MainLibs,如下图所示:

image

然后,同样的方式 app 依赖 OnKeyShareLibs 即可。

配置权限

这里之前配置过 SMSSDK ,只需补充缺少的权限即可,下面是同时集成了 SMSSDK 和 ShareSDK 所需的全部权限,如下:

<!-- 添加必要的权限 -->
<!--SMS SDK--><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.RECEIVE_SMS" /><uses-permission android:name="android.permission.GET_TASKS" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!--ShareSDK--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

配置 Application

如果之前配置过 SMSSDK ,那么 MobUIShell 是配置过的,只需添加缺少的 IntentFilter ,集成 SMSSDK 和 ShareSDK 可共用 MobUIShell ,如下:

<activityandroid:name="com.mob.tools.MobUIShell"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"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><!-- 调用新浪原生SDK,需要注册的回调activity --><intent-filter><action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>

如果您的项目集微信或者微信朋友圈,请查看AndroidManifest.xml配置文件里的package路径,需要在package目录下创建wxapi目录再放置WXEntryActivity。 没有此activity在微信分享后回调会检查是否有此activity,没有将会报错:

<activity     android:name=".yxapi.YXEntryActivity"     android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true"     android:screenOrientation="portrait" />

具体请参考:Android ShareSDK完整的集成文档

启用 SDK

通过 AndroidManifest.xml
  1. 在 Application 节点下添加以下属性:
android:name="com.mob.MobApplication"
  1. 在 Application 标签下添加 meta 参数:
<!-- 通过AndroidManifest配置AppKey和AppSecret,如果你选择通过代码配置,则不需要配置以下meta-data -->
<meta-data android:name="Mob-AppKey" android:value="你的AppKey"/>
<meta-data android:name="Mob-AppSecret" android:value="你的AppSecret"/>
代码配置
// 通过代码注册你的AppKey和AppSecret
MobSDK.init(context, "你的AppKey", "你的AppSecret");

上述两种方式,只使用其中一种即可初始化 ShareSDK 了。

调用分享界面

private void showShare() {OnekeyShare oks = new OnekeyShare();//关闭sso授权oks.disableSSOWhenAuthorize(); // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用oks.setTitle(getString(R.string.share));// titleUrl是标题的网络链接,仅在人人网和QQ空间使用oks.setTitleUrl("http://sharesdk.cn");// text是分享文本,所有平台都需要这个字段oks.setText("我是分享文本");// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片// url仅在微信(包括好友和朋友圈)中使用oks.setUrl("http://sharesdk.cn");// comment是我对这条分享的评论,仅在人人网和QQ空间使用oks.setComment("我是测试评论文本");// site是分享此内容的网站名称,仅在QQ空间使用oks.setSite(getString(R.string.app_name));// siteUrl是分享此内容的网站地址,仅在QQ空间使用oks.setSiteUrl("http://sharesdk.cn");// 启动分享GUIoks.show(this);
}

本文主要记录了如何以 module 的方式引入 第三方 SDK 以及页面的分享调用。

可以选择关注微信公众号:jzman-blog 获取最新更新,一起交流学习!

零点小筑

转载于:https://www.cnblogs.com/jzmanu/p/10284770.html

相关文章:

今天開始學習silverlight了

今天開始學習silverlight了,雖然集團里面很多的計算機安裝的系統是winpro2000,但老大說先不管,那只有學了,請大家多幫忙,發此貼留記號 转载于:https://www.cnblogs.com/dotneter/archive/2008/12/05/1348600.html

(C++)1002 A+B for Polynomials

笔记&#xff1a;1.两个不为0的数相加可能为0 2.浮点数的比较方法 3.输出的时候格式怎么办 本题空格放在哪有门道 4.不需要三个数组&#xff0c;一个就可以了&#xff0c;第二个“数组”输入的时候直接加在第一个上面 #include<cstdio> #include<cmath> #inclu…

(转)Unity3D - 性能优化之Draw Call

Unity&#xff08;或者说基本所有图形引擎&#xff09;生成一帧画面的处理过程大致可以这样简化描述&#xff1a;引擎首先经过简单的可见性测试&#xff0c;确定摄像机可以看到的物体&#xff0c;然后把这些物体的顶点&#xff08;包括本地位置、法线、UV等&#xff09;&#x…

Drill storage plugin实现原理分析

Drill Storage Plugin介绍 Drill是一个交互式SQL查询引擎&#xff0c;官方默认支持的数据源有hive、hbase、kafka、kudu、mongo、opentsdb、jdbc等&#xff0c;其中jdbc storage plugin可以覆盖所有支持jdbc协议的数据源&#xff0c;如&#xff1a;mysql、oracle等关系型数据库…

C# 创建控制台应用程序

C#的语法总结将全部通过控制台应用程序总结。 一、文件-》新建项目 二、 三、创建后的界面。 转载于:https://www.cnblogs.com/nevernet/archive/2008/12/08/1350024.html

(C++)1009 Product of Polynomials

笔记&#xff1a;1.如果开三个数组&#xff0c;乘积数组的大小是2*10^3&#xff0c;而不是10^6&#xff08;汗颜&#xff09;&#xff0c;如果开后者那么大的数组&#xff0c;需要定义在main函数外面了(实现一) 2.注意到double数组可能是非常稀疏的&#xff0c;为了减少运算量…

lispbox 安装运行.sh的时候出现 lispbox.sh: 2: lispbox.sh: Bad substitution

安装lispbox时使用tar命令将压缩文件解压之后cd进入之后在运行.sh文件时出现了如下情况。 $ sh lispbox.sh lispbox.sh: 2: lispbox.sh: Bad substitution 提示 bad substitution 这是因为linux有不同的shell 使用sh运行错误应该使用bash运行即可。 改成bash -x lispbox.sh即可…

Python-字符串操作方法 [转]

Python-String-Function 字符串中字符大小写的变换&#xff1a; * S.lower() #小写 * S.upper() #大写 * S.swapcase() #大小写互换 * S.capitalize() #首字母大写 * String.capwords(S) #这是模块中的方法。它把S用split()函数分开&#xff0…

旅行家的预算[贪心]

题目 Problem description 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市&#xff08;假设出发时油箱是空的&#xff09;。给定两个城市之间的距离D1、汽车油箱的容量C&#xff08;以升为单位&#xff09;&#xff0e;每升汽油能行驶的距离D2、出发点每升汽油价格P和…

(C++)1028 人口普查

笔记&#xff1a;把年龄转化成一个七位的整数是创举&#xff0c;但是要想清楚&#xff0c;年龄越大&#xff0c;这个数字越小orz #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std;struct person{char n…

说说.net事件和委托。

一说到.net的事件&#xff0c;也许你会想都说教程满天飞&#xff0c;一个被说烂了的东西还有什么可以说的啊&#xff1f;是啊&#xff0c;的确有很多好文章剖析事件&#xff0c;比如张子阳先生的C# 中的委托和事件重温Observer模式--热水器改 这两篇文章让我弄懂了委托、事件和…

【cs229-Lecture2】Linear Regression with One Variable (Week 1)(含测试数据和源码)

从Ⅱ到Ⅳ都在讲的是线性回归&#xff0c;其中第Ⅱ章讲得是简单线性回归&#xff08;simple linear regression, SLR&#xff09;&#xff08;单变量&#xff09;&#xff0c;第Ⅲ章讲的是线代基础&#xff0c;第Ⅳ章讲的是多元回归&#xff08;大于一个自变量&#xff09;。 本…

101种设计模式

https://sourcemaking.com/design-patterns-and-tips

(C++)1032 挖掘机技术哪家强

笔记&#xff1a;考虑到输入只有一所学校&#xff0c;且得分还为0的特殊情况&#xff0c;应该把high初始化为1 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std;int grds[100010] {0};int main(){int …

数据库打开报错: 值不能为空

报错信息如下&#xff1a; 数据库客户端打不开 解决方案&#xff1a; 找到下面的目录C:\Users\<username>\AppData\Local\Temp 创建一个空文件夹 名称是&#xff1a; 2 重新打开数据库转载于:https://www.cnblogs.com/Mander/p/3921251.html

学习 JavaScript (四)核心概念:操作符

JavaScript 的核心概念主要由语法、变量、数据类型、操作符、语句、函数组成&#xff0c;前面三个上一篇文章已经讲解完了。后面三个内容超级多&#xff0c;这篇文章主要讲解的是操作符。 操作符 什么叫做操作符&#xff1f; 这是一种工具&#xff0c;帮助我们操作字符串、数字…

(C++)1011 World Cup Betting

笔记&#xff1a;我觉得这一次的代码很优雅 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std;int maxPro(double a[3]){//返回值最大的下标 int idx0,max_pro0;for(int i0;i<3;i){if(a[i]>max_pr…

Ext学习-前后交互模式介绍

在前后台交互模式的介绍中&#xff0c;实际上就是Store中Proxy相关的内容&#xff0c;比如Ajax提交。 所以详细的文档请参考&#xff1a; Ext学习-基础概念&#xff0c;核心思想介绍 中关于数据模型和MVC结构部分。 作者&#xff1a;sdjnzqr 出处&#xff1a;http://www.cnblog…

让你彻底明白什么叫游戏引擎(1)

在阅读各种游戏介绍的时候我们常常会碰见“引擎”&#xff08;Engine&#xff09;这个单词&#xff0c;引擎在游戏中究竟起着什么样的作用&#xff1f;它的进化对于游戏的发展产生了哪些影响&#xff1f;希望下面这篇文章能为大家释疑。以希望能够帮助一些刚进入游戏行业的小菜…

185.dubbo 后台管理系统

2019独角兽企业重金招聘Python工程师标准>>> 1. 效果及目的 效果&#xff1a; 目的&#xff1a;查看 管理服务 2. 启动要求 &#xff08;1&#xff09;项目是dubbo &#xff08;2&#xff09;jdk 1.7 (3) dubbo的war要与zookeeper在同一台服务上 3. 安装zookeeper 要…

(C++)1027 打印沙漏

笔记&#xff1a;星号右边的空格不用打印 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std;int main(){int n;char c;scanf("%d %c",&n,&c);int clock[23];int col;for(int i1;i<…

黑帽大会2014:10个酷炫的黑客工具

http://www.csdn.net/article/2014-08-21/2821304 用于恶意软件分析的Maltrieve 安全研究人员使用Maltrieve工具收集服务器上的恶意软件。通过这个开源工具&#xff0c;恶意软件分析人员可以通过分析URL链表和已知的托管地址获得最新鲜的样本。 Kyle Maxwell是VeriSign的一名威…

C#无符号右移

/// <summary>/// 无符号右移&#xff0c;与JS中的>>>等价/// </summary>/// <param name"x">要移位的数</param>/// <param name"y">移位数</param>/// <returns></returns>public static int …

1027 Colors in Mars

笔记&#xff1a;本题属于进制转换&#xff0c;但是考察的重点不在除基取余上&#xff0c;因为转化得到的数只有两位&#xff0c;很容易得到每位上面应该是什么&#xff0c;但是和其他题不同的地方在于&#xff0c;每位可填的不见得是0~9&#xff0c;还包括ABC&#xff0c;这就…

json对象和json字符串转换方法

在WEB数据传输过程中&#xff0c;json是以文本&#xff0c;即字符串的轻量级形式传递的&#xff0c;而客户端一般用JS操作的是接收到的JSON对象&#xff0c;所以&#xff0c;JSON对象和JSON字符串之间的相互转换、JSON数据的解析是关键。 先明确2个概念例如&#xff1a; JSON字…

python-docx操作

import docx# 读取docx文档内容def readWord():doc docx.Document(demo.docx)fullText []for para in doc.paragraphs:fullText.append( para.text)print(\n . join(fullText))readWord()官方API&#xff1a;https://python-docx.readthedocs.io/en/latest/index.html ;转载…

javascript中FORM表单的submit()方法经验教训.

author songfeng 因为JS内对象的方法实际上是存储语句的一个类似于指针的东西. 其指向了内存的一个位置, 也就是其函数的位置,当然也可以让其指向一个变量值. var foo new Object();foo.bar function() {} //现在foo.bar就是指向了这个函数的内存位置.foo.bar &q…

1058 A+B in Hogwarts

笔记&#xff1a;和乙级的在霍格沃兹找零钱不同&#xff0c;这里不需要判断给出的两个数的大小&#xff0c;也没必要先都换算成最小的单位&#xff0c;可以直接从最低位开始加&#xff0c;如果超过该位的范围&#xff0c;则向上一位进一即可。 #include<cstdio> #includ…

DDD领域驱动设计之聚合、实体、值对象

关于具体需求&#xff0c;请看前面的博文&#xff1a;DDD领域驱动设计实践篇之如何提取模型&#xff0c;下面是具体的实体、聚合、值对象的代码&#xff0c;不想多说什么是实体、聚合等概念&#xff0c;相信理论的东西大家已经知晓了。本人对DDD表示好奇&#xff0c;没有在真正…

C#用 SendKyes 结合 Process 或 API FindWindow、SendMessage(PostMessage) 等控制外部程序

Win32 平台是 消息驱动模式.Net 框架是 事件驱动模式标题所指的 “控制外部程序”&#xff0c;外部程序是指与本程序无内在相关性的另外一个程序 基于上面提到的&#xff0c;对于.NET的winform程序&#xff0c;在默认情况下&#xff08;即未对接收消息的事件做自定义处理&#…