在实际的项目开发中,需要用到分享功能,一方面可以通过其他App将自己的发现和兴趣等进行分享,展示好的创意、想法,另一方面可以通过分享功能为当前正在使用的App进行推广,如分享到用户量较大的社交平台,提升App的关注度。
需要用到的第三方SDK是shareSDK(现在称为Mob,website:[http://www.mob.com/#/]),该网站提供了第三方平台分享、短信验证等实用的服务,通过该第三方平台的分享SDK,我们还可以在后台看到通过该服务,用户分享的次数和时间,可以全局观察并分析用户行为,进行综合分析。
Steps:
- 第一步:在官网注册用户后,通过创建应用获取到一个App Key,该App Key用于后面工程中进行替换ShareSDK中的AppKey
注册用户,创建应用,获取App Key:
用户–>产品中心–>使用shareSDK(如下图)–>添加应用
获取到App Key,点击快速集成,可以参考其快速集成步骤进行集成
- 第二步:下载shareSDK对应的Android客户端的SDK
首页–>SDK下载–>ShareSDK For Android,下载sharedSDK
选中下载官方DEMO源码,点击 下载SDK
下载后解压sdk压缩包,有四个文件夹
- 第三步:通过shareSDK对目标项目(需要集成第三方分享功能的项目)进行整合
打开SharedSDK for Android文件夹,双击QuickIntegrater.jar文件,弹出项目快速集成的引导框,填入要集成的项目的项目名称和包名,选中需要集成的平台,最后点击确定,如下图所示,最终在shareSDK目录下创建出一个经过集成的目标工程文件夹
进入该文件夹,复制该文件中的所有文件到eclipse工程目录,选择覆盖eclipse中目标项目工程文件中的所有文件,点击yes to all:
打开AndroidManifeast.xml文件,添加用户权限和activity:
<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"/>
<!-- 蓝牙分享所需的权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
添加activity
<activity
android:name="com.mob.tools.MobUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
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>
根据需要还可以添加微信、易信、支付宝的分享回调,需要添加下面的activity:
<!--微信分享回调 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" />
<!--易信分享回调 -->
<activity
android:name=".yxapi.YXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" />
<!-- 支付宝分享回调 -->
<activity
android:name=".apshare.ShareEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"/>
替换掉第一步申请的AppKey:
打开工程的assets目录下的ShareSDK.xml文件,将ShareSDK节点的AppKey属性的key值替换成第一步在应用中生成的AppKey,如下图所示:
- *第四步:在具体模块中调用链接分享的API,完成用户分享功能
将一键分享的代码复制到工程文件中,并在button的clcik方法中调用一键分享链接的API
private void showShare() {
ShareSDK.initSDK(this);
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(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“);
// 启动分享GUI
oks.show(this);
}
在button的click方法中调用showShare()方法完成一键分享:
public void oneKeyShare(View view){
showShare();
}
演示结果:
点击按钮,从底部弹出分享菜单
点击新浪微博
*>