话不多说,直接进入正题
1、获取Appkey
需要进入shareSDK的官网,获取一个appkey 和 App Secret
首先需要注册用户,然后登录。之后点击进入后台
接着添加应用
添加完应用后,会生成应用
2、下载ShreSDK
下载链接:http://www.mob.com/downloads/
然后选择自己需要的sdk,此处我们下载android
下载完成解压后是这个目录
3、集成shareSDK
这里给出官方集成sdk的文档 文档地址:http://wiki.mob.com/
可以选择你自己需要的文档,进行查阅。
同时这里也给出自己按照 官方的文档做的示例
3.1将shareSDK导入我们的项目
我们使用的是引用的方式
若提示错误 解决办法:Onekeyshare和Sharesdk在项目的根目录里的project.properties配置文件里设置了target=android-8,如果没有此版本的Adnroid SDK请修改你有的Android SDK版本后保存。项目的编码格式为UTF-8。
3.2项目引用
这里Onekeyshare 依赖了Sharesdk
选中Onkeyshare 右键--》properties--》android ---》add
接着选中Sharesdk项目右键--》properties---》android--》is library
再接着选中我们自己的app 项目右键--》properties--》android--》add
再接着选中我们自己的app 项目右键--》properties--》java build path--》Projects--》add
接着进入下载后解压的shareSDK 目录。进入ShareSDK for Android\ Res
将改目录下的ShareSDK.xml文件copy到自己的项目assert目录下
然后在打开加上你自己的appkey
3.3修改manifest.xml
接着在manifest.xml文件中添加所需要的权限
<!-- 添加必要的权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <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.RECEIVE_SMS" />
为了授权操作可以顺利完成,需要在application下注册下面的Activity:
<application android:name="com.mob.MobApplication"> <!-- 其它的activity --> <!-- ShareSDK的activity --> <activity android:name="com.mob.tools.MobUIShell" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:windowSoftInputMode="stateHidden|adjustResize" > <!-- ShareSDK3.1.0版本之前才需要在MobUIShell下面注册此意图,3.1.0版本之后(包含3.1.0)不需要注册此intent--> <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> <!--集成line客户端登录授权,需要添如下格式的过滤器--> <intent-filter> <data android:scheme="line.1477692153" /> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <!-- 填写您从Mob开发者后台中得到的Appkey和AppSecret --> <meta-data android:name="Mob-AppKey" android:value="您的AppKey"/> <meta-data android:name="Mob-AppSecret" android:value="您的AppSecret"/> </application> 如果集成QQ分享,或者使用QQ客户端来进行QQ空间的分享,须要在此处添加一个回调activity,对ACTION_VIEW事件的过滤器,其中的scheme是“tencent”前缀再开发者应用的加上appId。如果此Activity和过滤器不设置,则分享结束以后不能得到正确的回调。 <activity android:name="cn.sharesdk.tencent.qq.ReceiveActivity" android:launchMode="singleTask" android:noHistory="true"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="tencent100371282" /> </intent-filter> </activity>
如果您的项目集微信或者微信朋友圈,请查看AndroidManifest.xml配置文件里的package路径,需要在package目录下创建wxapi目录再放置WXEntryActivity。 没有此activity在微信分享后回调会检查是否有此activity,没有将会报错。
如我的项目在manifest.xml 中配置了package
则我添加的 WXEntryActivity结构如下
而如果您的项目集易信的两个平台,请查看AndroidManifest.xml配置文件里的package路径需要在package目录下创建yxapi目录在放置回调Activity:
<activity android:name=".yxapi.YXEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" />
在Application节点下添加以下属性:
android:name="com.mob.MobApplication"
我的结构如下
注意:如果你有自己的Application类,那么也可以让你的Application类继承MobApplication即可。
4、代码及测试
首先一个这么简单的界面
添加事件监听
public void shareTo(View v) { OnekeyShare oks = new OnekeyShare(); // 关闭sso授权 oks.disableSSOWhenAuthorize(); // 分享时Notification的图标和文字 2.5.9以后的版本不调用此方法 // oks.setNotification(R.drawable.ic_launcher, // getString(R.string.app_name)); // title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用 oks.setTitle("分享"); // titleUrl是标题的网络链接,仅在人人网和QQ空间使用 oks.setTitleUrl("http://sharesdk.cn"); // text是分享文本,所有平台都需要这个字段 oks.setText("我是分享文本"); // imagePath是图片的本地路径,Linked-In以外的平台都支持此参数 //oks.setImagePath("/sdcard/test.jpg");// 确保SDcard下面存在此张图片 // comment是我对这条分享的评论,仅在人人网和QQ空间使用 oks.setComment("我是测试评论文本"); // site是分享此内容的网站名称,仅在QQ空间使用(分享完成后可能会提示,是留在QQ,还是返回应用这个名称就是应用名) oks.setSite(getString(R.string.app_name)); // siteUrl是分享此内容的网站地址,仅在QQ空间使用(分享后点击就会进入改地址) oks.setSiteUrl("http://sharesdk.cn"); // url仅在微信(包括好友和朋友圈)中使用 oks.setUrl("http://sharesdk.cn"); // 启动分享GUI oks.show(this); }
运行效果如下