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/
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    支持: 新浪微博

  • 相关阅读:
    hiveserver2 with kerberos authentication
    python Basic usage
    python Quicksort demo
    Python HeapSort
    mrunit for wordcount demo
    CCDH证书
    Hadoop question list
    Hadoop Yarn core concepts
    Hadoop Resource
    Hadoop could not find or load main class
  • 原文地址:https://www.cnblogs.com/htynkn/p/AndroidSNS.html
Copyright © 2011-2022 走看看