andriod 实现新浪、QQ场地、朋友微信圈、微信朋友分享功能
前言:在自己的学习过程中的一些操作,分享一些理解。
下面将说明什么:
下载链接:http://download.csdn.net/detail/u014608640/7490357
首先。我们须要去ShareSdk官方站点http://sharesdk.cn/ 去下载ShareSDK ,然后我们会有4个文件:
依据我自己在学习的过程中仅仅用到了第一个目录的
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDYwODY0MA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast">
libs文件夹的2个项目,这2个是必需要的。是ShareSdk提供的,然后需要将这2个放入到自己做的项目其中去,在Res文件夹下有一个
ShareSdk.xml文件 这个非常重要的。大概意思就是:提供各个client是否能分享。将这个也要拷贝到自己做的项目的assets 文件夹下
第二步,我们须要将第3个文件Sample打开。里面有项目须要用到的一些类,
这个也须要导入到项目中去的,会自己主动生成一个小项目。注意:不是主程序哦。
这个程序中能够进行測试的,秘钥是123456
第三步:配置AndroidManifest.xml
<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"/>
其它配置:
<!-- Share SDK START -->
<activity
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" > <!--
AuthorizeAdapter表示一个继承自cn.sharesdk.framework.authorize.AuthorizeAdapter
的类。这个类能够监听到页面的生命周期。也能够获取授权页面的各种UI控件。
开发人员能够通过继承AuthorizeAdapter,重写其方法。并获取各种UI来自己定义这个页面的行为。
-->
<meta-data
android:name="AuthorizeAdapter"
android:value="cn.sharesdk.demo.MyAdapter" /> <!--
QZoneWebShareAdapter表示一个继承自cn.sharesdk.tencent.qzone.QZoneWebShareAdapter
的类,这个类能够监听到页面的生命周期。也能够获QQ空间网页分享权页面的各种UI控件。 开发人员能够通过继承QZoneWebShareAdapter,重写其方法,并获取各种UI来自己定义这个页面的行为。
-->
<meta-data
android:name="QZoneWebShareAdapter"
android:value="cn.sharesdk.demo.MyQZoneWebShareAdapter" /> <!--
Dropbox的SSO功能需要在此处加入一个对ACTION_VIEW事件的过滤器,当中的scheme是
“db-”前缀再开发人员应用的加上appKey。假设此过滤器不设置。则不能完毕SSO功能授权
-->
<intent-filter>
<data android:scheme="db-7janx53ilz11gbs" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter> <!--
假设集成QQ分享。或者使用QQclient来进行QQ空间的分享,需要在此处加入一个对ACTION_VIEW
事件的过滤器,当中的scheme是“tencent”前缀再开发人员应用的加上appId。假设此过滤器不设置。
则分享结束以后不能得到正确的回调
-->
<intent-filter>
<data android:scheme="tencent100371282" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<!-- 微信分享回调 -->
<activity
android:name="cn.sharesdk.demo.wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" /> <!-- Share SDK FINISH -->
配置完之后,就给大家说一下加入分享代码
在您的代码中调用此方法,就可以打开一键分享功能进行分享
列入一个button:
ShareSDKUtil shareSDKUtil = new ShareSDKUtil(this);
shareSDKUtil.setPage(getWindow().getDecorView());
shareSDKUtil.showShare(false, null);
核心代码:
public class ShareSDKUtil { private Context mContext; private View mView; public ShareSDKUtil(Context context) {
this.mContext = context;
} public Context getContext() {
return mContext;
} /**
* ShareSDK集成方法有两种</br>
* 1、第一种是引用方式。比如引用onekeyshare项目。onekeyshare项目再引用mainlibs库</br>
* 2、另外一种是把onekeyshare和mainlibs集成到项目中。本样例就是用另外一种方式</br> 请看“ShareSDK
* 使用说明文档”,SDK下载文件夹中 </br> 或者看网络集成文档
* http://wiki.sharesdk.cn/Android_%E5%BF%AB
* %E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97
* 3、混淆时。把sample或者本样例的混淆代码copy过去,在proguard-project.txt文件里
*
*
* 平台配置信息有三种方式: 1、在我们后台配置各个微博平台的key
* 2、在代码中配置各个微博平台的key。http://sharesdk.cn/androidDoc
* /cn/sharesdk/framework/ShareSDK.html
* 3、在配置文件里配置,本样例里面的assets/ShareSDK.conf,
*/
public void showShare(boolean silent, String platform) {
final OnekeyShare oks = new OnekeyShare();
oks.setNotification(R.drawable.app_icon, getContext().getString(R.string.app_name));
oks.setAddress("12345678901");
oks.setTitle(getContext().getString(R.string.app_name));
oks.setTitleUrl("http://www.xx.com");
oks.setText("555555555555555555"); // oks.setImagePath(Environment.getExternalStorageDirectory().getAbsolutePath()+"/AndyDemo/ScreenImage/Screen_1.png"); //weixin
// oks.setImageUrl("http://f1.sharesdk.cn/imgs/2014/02/26/owWpLZo_638x960.jpg");//MainActivity.TEST_IMAGE_URL
oks.setImageUrl("/sdcard/AndyDemo/ScreenImage/Screen_1.png");
// 不能为空。否则微信分享类型为文本
oks.setUrl("http://www.xx.com");// WeiXin
// oks.setFilePath(MainActivity.TEST_IMAGE);//WeiXin
// oks.setComment(getContext().getString(R.string.share));// QZone
oks.setSite(getContext().getString(R.string.app_name));// QZone
oks.setSiteUrl("http://www.xx.com");// QZone
// oks.setVenueName("ShareSDK");
// oks.setVenueDescription("This is a beautiful place!");
// oks.setLatitude(23.056081f);
// oks.setLongitude(113.385708f);
oks.setSilent(silent);
if (platform != null) {
oks.setPlatform(platform);
} // 取消凝视,能够实现对详细的View进行截屏分享
// Add by yinghui.hong 取消凝视的同一时候须要将setImagePath凝视,见{@link ShareCore share}
// oks.setViewToShare(getPage());
oks.setViewToShare((Activity)getContext());
// 去除凝视,可令编辑页面显示为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(getContext());
} public void setPage(View view) {
this.mView = view;
} protected View getPage() {
return mView;
}
我自己在做的过程中遇到的问题也说一下: 做这些功能分为2种。一种是须要审核的,我做的就是第一种,第2种是不须要审核的。这个大家能够去看下API。
像新浪和微信.QQ空间必需要审核才干够分享的。审核的时间有点长,在微信审核的时候那个应用签名一定要注意了,不能填错哦。否则就算审核成功了,也无法
分享的哦。
QQ空间是支持网络图片,我做的时候本地图片会显示不出来,查了下原因。是由于QQ空间没提过这个功能。所以仅仅能分享文字!
版权声明:本文博主原创文章,博客,未经同意不得转载。
andriod 实现新浪、QQ场地、朋友微信圈、微信朋友分享功能的更多相关文章
- php 解析 视频 信息 封面 标题 图片 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视
原文地址:http://www.lianyue.org/2013/2497/ <?php /** * 解析 视频信息 类 * * 支持 优酷, 土豆 酷6 56 新浪 qq播客 乐视 乐视 ** ...
- JAVA调用微信接口实现页面分享功能(分享到朋友圈显示图片,分享给朋友)
钉钉提供的内网穿透之HTTP穿透:https://www.cnblogs.com/pxblog/p/13862376.html 网页分享到微信中如何显示标题图,如果自定义标题图,描述,显示效果如下 官 ...
- 使用微信JS-SDK 实现 自定义 分享 功能
微信PC端点击页面,转发给朋友.
- 新浪qq登录
一:到腾讯QQ互联上申请APPID和APPKEY.申请地址: http://connect.qq.com/ 如同,这里我们可以获取到需要跳转到的APPID和APPKEY.新浪微博的申请同理 二:在Th ...
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈
分享出去的内容,可以通过jssdk进行修改. 1.配置jssdk Wx_config.html <?php import("@.ORG.jssdk"); $jssdk = n ...
- 微信小程序之分享功能
说到分享 大家都会想到手机右上角点击不就分享了么?对的没错,那样是分享转发的是小程序 而不是指定的某个页面,所以自己动手丰衣足食,自己写一个转发功能被, 其实也没那么可怕,主要参考的是微信小程序AP ...
- 微信小程序---转发分享功能
1. 转发---onShareAppMessage 2.不带参数 //用户点击右上角分享 onShareAppMessage: function (res) { return { title: 'xx ...
- 微信小程序的分享功能-css文字超过两行隐藏
.info{ width:100px; word-break:break-all; display:-webkit-box; -webkit-box-orient:vertical; -webkit- ...
- 微信JS-SDK实际分享功能
为了净化网络,整顿诱导分享及诱导关注行为,微信于2014年12月30日发布了<微信公众平台关于整顿诱导分享及诱导关注行为的公告>,微信平台开发者发现,原有的微信分享功能不能用了,在ipho ...
随机推荐
- zoj 2724 Windows Message Queue 优先队列
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1724 题目大意: 给出两种操作,GET要求取出当前队首的元素,而PUT会输入名 ...
- Geodatabase模型
原文 Geodatabase模型 地理数据模型是地理实体及其关系的形式化抽象和数学描述.随着数据库.面向对象等技术的发展,面向对象的地理数据模型成为大型空间数据库的首选方案,它克服了传统地理数据模型的 ...
- UI组件之AdapterView及其子类关系,Adapter接口及事实上现类关系
AdapterView本身是一个抽象基类,它派生的的子类在使用方法上十分类似.AdapterView直接派生的三个子类:AbsListView.AbsSpinner,AdapterViewAnimat ...
- html中radio、checkbox选中状态研究(静下心来看,静下心来总结)
html中radio.checkbox选中状态研究(静下心来看,静下心来总结) 一.总结 1.单选框的如果有多个checked 会以最后一个为准 2.js动态添加checked属性:不行:通过 $(& ...
- MongoDB集群安装与配置2.4.3版本
mongoDB安装http://www.mongodb.org/downloads拷文件到# cp mongodb-linux-i686-2.4.1.tgz /usr/local/进入目录:# cd ...
- 25、驱动调试之打印到proc虚拟文件
1.dmesg指令是通过读/proc/kmsg来获取打印信息,也可以通过cat /proc/kmsg打印: 说明:kmsg是环形缓存区,只能读一次 2.内核中fs/proc目录下有相关文件,比如pro ...
- 【2013】将x插入有序数列
Time Limit: 3 second Memory Limit: 2 MB 将一个数x插入到有序数列a中,插入后a仍然有序. Input 第一行输入有序数列a的元素个数 第二行依次输入a的元素,以 ...
- 事件处理之一:两种方式:监听器与回调 分类: H1_ANDROID 2013-10-31 10:26 3250人阅读 评论(0) 收藏
Android组件的事件处理有2种方式: 1.基于监听器的事件处理方式:先定义组件,然后为组件设定监听器. 详见http://blog.csdn.net/jediael_lu/article/deta ...
- 远离“精神乞丐”(IBM的前CEO郭士纳把员工分为四种类型)
语音丨吴伯凡 乞丐与其说是一种身份, 不如说是一种精神状态, 习惯性索取且心安理得, 习惯性寻求安慰,习惯性抱怨, 与之截然对立的, 是“操之在我”(Proactive)的精神, 乞丐型员工是公司内部 ...
- php汉字 字节数组转换
<?php function stringToByteArray($str,$charset) { $str = iconv($charset,'UTF-16',$str); preg_matc ...