andriod 实现新浪、QQ空间、微信朋友圈、微信好友分享功能

前言:自己在学习的过程中的一些操作过程,对分享的一些理解。下面就讲解一下:

下载地址:http://download.csdn.net/detail/u014608640/7490357

首先,我们需要去ShareSdk官方网站http://sharesdk.cn/ 去下载ShareSDK ,然后我们会有4个文件:

根据我自己在学习的过程中只用到了第一个文件夹的

libs目录的2个项目,这2个是必须要的,是ShareSdk提供的,然后需要将这2个放入到自己做的项目当中去,在Res目录下有一个

ShareSdk.xml文件  这个很重要的,大概意思就是:提供各个客户端能否分享,将这个也要复制到自己做的项目的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分享,或者使用QQ客户端来进行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 -->

配置完之后,就给大家说一下添加分享代码

在您的代码中调用此方法,即可打开一键分享功能进行分享

列入一个按钮:

                        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空间、微信朋友圈、微信好友分享功能,布布扣,bubuko.com

时间: 2024-10-06 07:49:43

andriod 实现新浪、QQ空间、微信朋友圈、微信好友分享功能的相关文章

仿微信朋友圈点赞和评论功能

仿微信朋友圈点赞和评论功能 最近在做朋友圈的项目,所以写一个Demo,代码就是简单实现了一下功能,没有做优化,凑合看 图文排列是用的RecyclerView实现的,弹窗效果是用的自定义的PopupWindow,点赞应该是在本地请求数据库,设置一个flag,获取当前用户的id后,带着id向服务器post一个flag,评论就比较简单了,也是获取当前朋友id(或者昵称),带着内容,向服务器post 贴代码: package com.example.lenovo.dianzandemo; import

QQ空间/朋友圈类界面的搭建

类似于QQ空间的布局主要是在说说信息.点赞.回复三大部分的自适应布局上. 当我们需要搭建类似QQ空间.微信朋友圈的界面的时候,可做如下操作: 创建一个对应的model类: 创建一个对应model类的frameModel类,并将对应的model封装进这个frameModel类.frameModel类是将model对应显示的data的控件frame转换为一个可持久化的frame,这样一来,就可以在第3布容易很多: 创建一个talbleviewcell,根据 model可能显示的对象,初始化cell,

微信朋友圈如何同时分享(图片+文字) Android版

以下是:微信朋友圈SDK 分享图片的代码,但只能分享图片,不能分享文字,如何才能图片和文字同时分享?求各位大神指教! public class MainActivity extends Activity {     private static final int THUMB_SIZE = 150;     private static final String SDCARD_ROOT = Environment.getExternalStorageDirectory().getAbsolute

微信朋友圈如何同时分享(图片+文字)

2014-04-17 20:37 以下是:微信朋友圈SDK 分享图片的代码,但只能分享图片,不能分享文字,如何才能图片和文字同时分享?求各位大神指教! public class MainActivity extends Activity {     private static final int THUMB_SIZE = 150;     private static final String SDCARD_ROOT = Environment.getExternalStorageDirect

模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)

我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么作为初学者,要模仿这些功能有点复杂的,最起码表的关系得弄清楚~~ 先把思路理一下: (1)用户登录,用session读取当前用户----目的是:该用户可以发表动态,重点是显示该用户好友及他自己发表的动态,并且按发表时间排序. (2)做个发表动态框实现发表动态功能 (3)显示该用户和他好友已经发表对的动态信息,并按发表时间由近到远显示 (4)再每条动态后面做一个评论按钮和删除按钮:实现对动态的评论,回复和删除(斜体部分下一

关于JS交互--调用h5页面,点击页面的按钮,分享到微信朋友圈,好友

关于js交互,在iOS中自然就想到了调用代理方法 另外就是下面的,直接上代码了: 如果你的后台需要知道你的分享结果,那么,就在回调里面调用上传到服务器结果的请求即可

微信朋友圈评价功能的细节考虑及实现

1. 微信朋友圈 微信朋友圈的布局很容易,网上类似的代码也很多,但是评价功能有些细节的地方要考虑,主要是为了用户体验. 类似键盘不要遮挡评价框,评价框随着内容的增多变长这些网上的处理方法很多,这里就不列出来了. 微信朋友圈只要按了评价,对话框升起来正好是落在了这条状态的正下方,这个小细节有着非常好的用户体验,这种实现方式有很多,下面来说说我实现的方法. 2. 评价细节的实现 我的方法是,按下评价按钮的时候先把按钮所在的cell的尾部的位置坐标y保存下. self.replyViewDraw =

andriod 实现新浪、QQ场地、朋友微信圈、微信朋友分享功能

前言:在自己的学习过程中的一些操作,分享一些理解. 下面将说明什么: 下载链接:http://download.csdn.net/detail/u014608640/7490357 首先.我们须要去ShareSdk官方站点http://sharesdk.cn/ 去下载ShareSDK ,然后我们会有4个文件: 依据我自己在学习的过程中仅仅用到了第一个目录的 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxNDYwODY0MA==/font/5a6

Android:NineGridLayout — 仿微信朋友圈和QQ空间的九宫格图片展示自定义控件

NineGridLayout 一个仿微信朋友圈和QQ空间的九宫格图片展示自定义控件. GitHub:https://github.com/HMY314/NineGridLayout 一.介绍 1.当只有1张图时,可以自己定制图片宽高,也可以使用默认九宫格的宽高: 2.当只有4张图时,以2*2的方式显示: 3.除以上两种情况下,都是按照3列方式显示,但这时有一些细节: a.如果只有9张图,当然是以3*3的方式显示: b.如果超过9张图,可以设置是否全部显示. 如果设置不完全显示,则按照3*3的方式