zoukankan      html  css  js  c++  java
  • 为Android应用程序添加社会化分享功能

    正在做个android的小应用,有点想尝试一下社会化分享,比如分享到新浪微博啥的。看一下新浪,人人网的API,说实话功能很全很强大,但虽说有相对的SDK,但是总觉得不方便。

    因为正在使用友盟的统计SDK,无意间发还有个SNS的SDK,看了一下文档,感觉不错哈。
    总共需要3个包,Umeng-Android-SDK-SnsService.jar,httpmime-4.1.1.jar和commons-httpclient-3.1.jar。大小分别为63K,27K,298K。感觉有点点大,但是比较一下新浪,人人,腾讯微薄提供的API,其实大小没差好多,等下我们还可以压缩一下的嘛。
    新建一个文件夹libs,将3个包导入其中,只有3个哈,其他两个是我这个程序其他功能要使用的。
     

    在开发工具--SNS分享中 设置相关的Api key和Api Secret,没有就去申请一个。

    然后在Android的配置文件中添加两个Activity。

    <activity android:name="com.umeng.api.activity.OauthActivity" 
    android:configchanges="orientation|keyboardHidden"> 
    </activity> 
    
    <activity android:name="com.umeng.api.activity.UpdateStatusActivity" android:theme="@style/Theme.IOSched" 
        android:configchanges="orientation|keyboardHidden"> 
        <intent-filter> 
            <action android:name="android.intent.action.VIEW"></action> 
            <category android:name="android.intent.category.DEFAULT"></category> 
            <category android:name="android.intent.category.BROWSABLE"></category> 
            <data android:scheme="schema友盟的应用KEY"></data> 
        </intent-filter> 
    </activity>
    官方文档的位置还要多一点点...但是我觉得那些看实际情况了。
    那个scheme那里主要是为了区分,应用KEY就是你在友盟注册的KEY,因为我有用它的统计SDK,所以有KEY,没有的话去申请一个。
    然后添加3个权限,访问网络的权限肯定是必须的,还有判断网络情况,友盟还要求一个读取终端IMEI的权限,一共三个。
     
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> 
    <uses-permission android:name="android.permission.INTERNET"> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE">
    然后是资源文件,下载的SDK有,全部复制到项目里面。
    目前友盟的SDK支持3家:新浪微博,腾讯微博,人人网。如果你只想用其中的两家或者一家可以在umeng_share_strings.xml
    中修改
    <string name="umeng_share_renr">open</string> 
    <string name="umeng_share_sina">open</string> 
    <string name="umeng_share_tenc">close</string> 

    不用的写成Close就可以了。不过我觉得没有很大的问题还是3家都要吧,如果只是用1个布局文件有点小瑕疵..看着不顺眼。

    调用的时候也很简单
    UMSnsService.share(this, “这是内容”);
    如果使用模板的话就传一个Hashmap就去就可以了,具体可以看文档。
    我觉得友盟做的最好的就是提供其他的API,可以更灵活的使用相关功能了。
    比如
    1.获取用户授权
    UMSnsService.CallbackListener listener = new UMSnsService.CallbackListener() 
    @Override
    public void onComplete(Bundle value) {
    String uid = value.getString("uid"); //这是授权完成的uid,使用其他授权服务的凭证
    }
    @Override
    public void onError(UMSNSException e) {
    }
    };
    UMSnsService.oauthSina(this, listener);
    2.直接分享到特定的SNS提供商
    UMSnsService.update(this, UMSnsService.SHARE_TO.SINA, “这是内容”);
    3.检查用户是否已经授权
    UMSnsService.isAuthorized(this, UMSnsService.SHARE_TO.SINA);
    更多的内容还是参考文档。
    还有一个统计数据可以查看:

      
    总的来说我觉得友盟的分享SDK做的还是不错的,虽然人人分享我一直没有配置成功,而且布局有点问题,但是毕竟大大简化了开发。
    希望友盟以后增加一些其他的SNS提供商,然后相关功能越来越强大。


    作者:黄云坤
    出处:http://www.huangyunkun.com/
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    支持: 新浪微博

  • 相关阅读:
    约瑟夫环-我的解答与迷宫
    数据结构实验一
    typedef struct 是什么意思
    编程名言名句
    创建单链表
    离散实验一
    Angela Merkel poised for record poll win and historic third term
    我的生活计划-贵在执行,贵在坚持
    考研经验
    2010年河南省普通高校招生本科一批院校 平行投档分数线(理科)
  • 原文地址:https://www.cnblogs.com/htynkn/p/AndroidSNS.html
Copyright © 2011-2022 走看看