关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 安卓开发 »Android 社会化分享项目总结

    Android 社会化分享项目总结

    2015-10-10 00:00:00 出处:江南一点雨
    分享

    随着现在社交网络的日益繁多,众多的社交客户端已占据了人们的大量时间,所以在我们的应用中具有一键分享的功能对提高我们产品的知名度有很大的帮助。新浪微博、腾讯微博、腾讯QQ、微信、QQ空间、豆瓣等众多知名社交站点,都是我们可以分享的去处,当然,分享功能涉及到别人第三方的权益,肯定是由他们提供SDK等支持,我们才能进行分享使用。既然分享如何重要,那么我们就该学习下Android系统如何实现分享功能。

    现在在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组件来指定我们分享的内容即可,下面来看下效果图。

    intent

    我们看到上面有了我们的分享功能,效果还不错,但是我们忧愁的发现,没有我们常见的QQ、新浪微博、豆瓣啊!确实,这就是它的局限性,简单,但是不一定能达到我们的特殊需求,此时,第三方的SDK火速前来救驾,用到它的时候出现了。

    二、第三方组件ShareSDK的使用

    我们知道,当我们分享到腾讯、新浪这些主流社交平台时,肯定需要他们提供的不同SDK来进行支持,假如我们支持十几种平台,岂不是很麻烦,怎搞?既然有需求,肯定有商机,所以这个问题早被人家给解决了,即我们即将学习的ShareSDK的使用。下面我们分步骤介绍下它的使用。

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

    2、下载官方提供的SDK。我已经下载好了,最新版本v2.6.3,下载地址sdk下载地址

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

    sdk

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

    project

    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信息,例如:

    sharesdk

    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进行使用。看看效果图吧!

    sharesdkpic

    这个就是一个简单的快速集成介绍,更多高级功能肯定不会这么简单,比如这里的方向,弹出的对话框的样式,都是固定死的,不够灵活,我们可以自己定制,在下篇博客中在来学习下高级的用法。源码地址

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    SQL汉字转换为拼音的函数

    windows 7系统无法运行Photoshop CS3的解决方法

    巧用MySQL加密函数对Web网站敏感数据进行保护

    MySQL基础知识简介

    Windows7和WinXP下如何实现不输密码自动登录系统的设置方法介绍

    windows 7系统ip地址冲突怎么办?windows 7系统IP地址冲突问题的

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。