众所周知,互联网是一个资源共享的地方,在网络上,我们可以分享我们所有认为好的资源。而随着互联网信息爆发式的增长,我们习惯了一键分享功能,比如:微博分享、微信分享、QQ空间分享、人人网分享等等。由此可见分享是很重要的一个客户体验功能,那在移动端,我们怎样实现分享功能呢?

从Android系统的社会分享功能来看,实现手段主要有两种:一种是通过系统自带的来启动分享功能;第二种是通过第三方的SDK插件进行分享;具体实现方式如下。

一、Android系统启动分享功能

系统启动分享功能很简单,实现也很容易,下面通过一个demo为大家展示一下:

1、还是先看一个布局文件,布局文件很简单,仅仅一个button按钮来触发分享功能即可:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

<Button

android:id="@+id/btn_share"

android:text="@string/hello_world"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:padding="10dp"/>

</RelativeLayout>

2、直接看实现的代码:

public class MainActivity extends ActionBarActivity {

private Button btn_share;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

btn_share = (Button) findViewById(R.id.btn_share);

btn_share.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

shareBySystem();

}

});

}

/**

* 通过系统的组件进行分享

*/

private void shareBySystem(){

Intent intent = new Intent(Intent.ACTION_SEND);

intent.setType("image/*");

intent.putExtra(Intent.EXTRA_SUBJECT,"Share");

//设置分享的内容

intent.putExtra(Intent.EXTRA_TEXT, "I have successfully)");

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(Intent.createChooser(intent, getTitle()));

}

仅仅通过系统的Intent组件来指定我们分享的内容即可,效果图如下:

从图片中,可以看出分享功能已经实现,但是问题来了,这种方式实现的分享功能却没有大家常用的QQ、新浪微博、豆瓣等!这就是这种分享功能实现的局限性,虽然实现简单,但是不一定能达到我们的特殊需求。为解决这个问题,我们就需要用到,第三方的SDK插件了。

二、第三方组件ShareSDK的使用

要分享东西到腾讯、新浪这些主流社交平台时,没有他们提供的SDK支持是不可能实现的,那么问题又来了,如果要分享到十几种平台岂不是需要十几种SDK插件?其实我们可以直接用ShareSDK的解决,下面就一起来看看他的具体实现步骤吧。

1、在 mob官网注册一个开发者账号,然后填写相关的认证信息即可。

2、下载官方提供的SDK。

3、进入ShareSDK解压目录,打开“Share SDK for Android”目录,可以找到“QuickIntegrater.jar”,这个就是快速集成ShareSDK的工具,我们双击该工具,选择我们要分享的平台,填写好事例名称和包名,点击【确定】,然后系统自动给我们生成一个我们需要的demo,如下图:

4、我们赋值文件夹下的对应文件,拷贝到我们工程目录即可。

5、至此,所有需要的文件都已经拷贝到我们工程中,我们接下来就是修改Manifest文件的配置。

(1)添加权限

<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" />

(2)配置我们分享的主流平台的Activity文件,例如:

<!-- QQ客户端回调 -->

<activity

android:name="cn.sharesdk.tencent.qq.ResultReceiver"

android:launchMode="singleTask"

android:noHistory="true">

<!--

如果集成QQ分享,或者使用QQ客户端来进行QQ空间的分享,须要在此处添加一个对ACTION_VIEW

事件的过滤器,其中的scheme是“tencent”前缀再开发者应用的加上appId。如果此过滤器不设置,

则分享结束以后不能得到正确的回调

-->

<intent-filter android:priority="1000" >

<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=".wxapi.WXEntryActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true" />

<!-- 易信分享回调 -->

<activity

android:name=".yxapi.YXEntryActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:configChanges="keyboardHidden|orientation|screenSize"

android:excludeFromRecents="true"

android:exported="true"

android:launchMode="singleTop" />

<!-- 支付宝分享回调 -->

<activity

android:name=".apshare.ShareEntryActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true"/>

<!-- 调用新浪原生SDK,需要注册的activity -->

<activity

android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"

android:configChanges="keyboardHidden|orientation"

android:windowSoftInputMode="adjustResize"

android:exported="false" >

</activity>

<!-- 调用新浪原生SDK,需要注册的回调activity -->

<activity

android:name="cn.sharesdk.sina.weibo.SinaActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar">

<intent-filter>

<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />

<category android:name="android.intent.category.DEFAULT" />

</intent-filter>

</activity>

6、使用第三方的SDK,他们都会要求我们提供应用的App_key进行识别,所以ShareSDK也不例外,在做第4步时,我们需要将assets文件夹下的一个xml文件进行拷贝,这个文件里面包含了我们分享的各个平台的App_key信息,例如:

7、至此,所有配置基本完成,我们只需要在代码中调用分享功能即可。

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的onClick事件中进行响应即可。

btn_share.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

showShare();

}

});

至此,使用ShareSDK的快速集成已经完成了。但值得注意的是,ShareSDK仅仅是一个将个平台的分享集成的一个工具,我们还是要去各个社交平台去注册账户,然后注册应用信息,才能获取对应的App_key进行使用。效果如下:

以上就是Android社会化分享最基本功能的简单介绍,当然Android分享还有很多高级的功能,在以后的分享中小编将为大家一一介绍。同时,也希望通过本文的分享,对Android初学者这块功能的学习、使用有所帮助。

Android社会化分享功能的实现步骤的更多相关文章

  1. [Xcode 实际操作]八、网络与多线程-(25)实现ShareSdk的社会化分享功能

    目录:[Swift]Xcode实际操作 完成开发包的安装和配置之后,本文将演示社会化分享功能的具体开发步骤. 在项目导航区,打开并编辑程序代理文件[AppDelegate.swift] import ...

  2. Android微信分享功能实例+demo

    Android微信分享功能实例 1 微信开放平台注册 2 获得appId,添加到程序中,并运行程序 3 使用应用签名apk生成签名,添加到微信开放平台应用签名,完成注册 4 测试分享功能. 有问题请留 ...

  3. [Xcode 实际操作]八、网络与多线程-(24)社会化分享功能开发包的安装和配置:微信、QQ、微博

    目录:[Swift]Xcode实际操作 本文将演示如何在开放平台注册应用,并获得相关的密钥信息,用于实现后面文章的微博分享功能. 一.新浪微博开放平台 [登录]->[微服务]->[粉丝服务 ...

  4. Android集成友盟社会化分享功能

    1.  产品概述 友盟社会化组件,可以让移动应用快速具备社会化分享.登录.评论.喜欢等功能,并提供实时.全面的社会化数据统计分析服务. 指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪 ...

  5. iOS快速集成友盟社会化分享功能(v6.1.1)

    1.  U-Share SDK集成 1.1 下载U-Share SDK 通过iOS社会化组件选择所需的社交平台后进行下载,下载链接http://dev.umeng.com/social/ios/sdk ...

  6. android 实现分享功能两种方法

    当我想做一个智能的记事本的时候,我就在尝试自己写一组分享功能.后来才知道,原来每个社交软件中都有自己的分享接口. 这就大大减少了我们的代码量了. 第一种方法:特点--简单 package com.ex ...

  7. Android APP分享功能实现

    [Android应用开发详解]第01期:第三方授权认证(一)实现第三方授权登录.分享以及获取用户资料   由于公司项目的需要,要实现在项目中使用第三方授权登录以及分享文字和图片等这样的效果,几经波折, ...

  8. android一键分享功能不使用任何第三方sdk

    在android中有自带的一键分享功能,不过它会把所有带分享的应用都找出来,如果我们只需要一些常见的分享应用,该如何做呢? 下面看我的效果图(横屏和竖屏自动适配): 接下来看我的调用(支持图片和文字分 ...

  9. Android Facebook分享功能实现

    1.下载 Facebook SDK https://developers.facebook.com/docs/Android?locale=zh_CN 2.在facebook下设置app的相关信息 3 ...

随机推荐

  1. JS基础——JavaScript原型和原型链及实际应用

    构造函数 function Stu(name,age){ this.name=name; this.age=age; } instanceof 查看引用类型对象是属于哪个构造函数的方法,通过__pro ...

  2. Eclipse+Python环境配置

    Eclipse+Pydev 1.安装Eclipse Eclipse可以在它的官方网站Eclipse.org找到并下载,通常我们可以选择适合自己的Eclipse版本,比如Eclipse Classic. ...

  3. Nginx的编译安装及服务启动脚本

    1.解决依赖关系 编译安装nginx需要事先需要安装开发包组"Development Tools"和 "Development Libraries".同时,还需 ...

  4. Nagios 监控Windows服务器(详细篇)

    1. 监控内容 windows服务器的内部参数包括以下 a. 内存使用状况 b. CPU负载 c. 磁盘使用状况 d. 服务状态 e. 运行的进程 2. 监控原理 在windows服务器内安装NSCl ...

  5. Go HTTP模块处理流程简析

    Go语言提供完善的net/http包,用户使用起来非常方便简单,只需几行代码就可以搭建一个简易的Web服务,可以对Web路由.静态文件.cookie等数据进行操作. 一个使用http包建立的Web服务 ...

  6. ethereum(以太坊)(六)--整型(int)

    pragma solidity ^0.4.20; /* uint8 uint16 ...uint256 int8 int16 int24 ..int256 uint => uint256 int ...

  7. scrapy--json(喜马拉雅Fm)

    已经开始听喜马拉雅Fm电台有2个月,听里面的故事,感觉能听到自己,特别是蕊希电台,始于声音,陷于故事,忠于总结.感谢喜马拉雅Fm陪我度过了这2个月,应该是太爱了,然后就开始对Fm下手了.QAQ 该博客 ...

  8. c语言可变参数函数

    c语言支持可变参数函数.这里的可变指,函数的参数个数可变. 其原理是,一般情况下,函数参数传递时,其压栈顺序是从右向左,栈在虚拟内存中的增长方向是从上往下.所以,对于一个函数调用 func(int a ...

  9. Numpy 索引及切片

    1.一维数组的索引及切片 ar = np.arange(20) print(ar) print(ar[4]) print(ar[3:6]) print(ar[:4:2]) #索引到4 按2的步长 pr ...

  10. vue webpack build 打包过滤console.log()日志

    vue cli创建项目在 webpack.prod.conf.js文件 //打包时清除页面中所有打印及debugger断点 new webpack.optimize.UglifyJsPlugin({ ...